开发者

UGC not being created

开发者 https://www.devze.com 2023-04-12 23:51 出处:网络
I\'m trying to create user-generated posts. I know that the posts are being created in the db, but are not displaying. Terminal puts:

I'm trying to create user-generated posts. I know that the posts are being created in the db, but are not displaying. Terminal puts:

User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  SQL (18.4ms)  INSERT INTO "events" ("content", "created_at", "updated_at",
    "user_id") VALUES (?, ?, ?, ?)  [["content", "Test post."], ["created_at",
    Sat, 15 Oct 2011 06:36:49 UTC +00:00], ["updated_at",
    Sat, 15 Oct 2011 06:36:49 UTC +00:00], ["user_id", 1]]
Redirected to http://localhost:3000/events
Sta开发者_StackOverflowrted GET "/events" for 127.0.0.1 at Sat Oct 15 00:36:49 -0600 2011
  Processing by EventsController#show as HTML
Completed 404 Not Found in 1ms

ActiveRecord::RecordNotFound (Couldn't find Event without an ID):
  app/controllers/events_controller.rb:22:in `show'

Saying the same thing, but my app gives me the same error:

Couldn't find Event without an ID
app/controllers/events_controller.rb:22:in `show'

Is this a problem with my Events_Controller method "show":

def show
  @title  = "Your Events"
  @event  = Event.find(params[:id])
end

Or a routine issue? I'm trying to display an index of all events created.

Thanks in advance for any help.


In EventsController on line 13 you have:

redirect_to events_path

I believe this corresponds to the sixth line in your log above ("Redirected to http://localhost:3000/events").

When you use redirect_to, however, it initiates a new GET request, and as you did not specify any parameters params is consequently empty. That's why params[:id] is nil and Event.find(params[:id]) throws the error you're seeing.

Instead of using redirect_to, are you sure you shouldn't be using render :action => :show or render :action => :index? Unlike redirect_to, render does not initiate a new request, it merely renders the specified view, but within the current context (where, in your case, @event is already defined.

For more information on render vs. redirect_to read the Rails Guide on Layouts and Rendering, section 2 in particular.

0

精彩评论

暂无评论...
验证码 换一张
取 消