我刚刚开始使用RoR并且到目前为止一直很愉快。目前我正在尝试将事件发布到中央供稿,也许我已经设想了我如何正确设置。我有两个模型,用户和事件,我会给出一个要点。用户拥有多个事件,而事件属于用户。我正在尝试将事件保存到所有用户都可以看到的中央供稿“ala facebook”。我在事件控制器中的创建方法是:
def create
@event = current_user.events.build(params[:event])
if @event.save
flash[:success] = "Event Shared"
render :action => :show
else
render :new
end
end
render:action => :show是diplaying帖子并转到/ events但是帖子没有被保存。当我回到/ events时,我收到错误:找不到没有ID的事件。
非常感谢任何帮助。在此先感谢,rails社区一直很棒!
答案 0 :(得分:1)
我已经检查了您的源代码,并且目前看到以下我认为不正确的事情。如果他们对不存储事件负责,我不知道:
您的routes.rb文件包含一些我不理解的内容:
如果事件belongs_to
用户和用户有很多事件,则事件应保留在用户的上下文中。请参阅Rails指南中的nested resources。您对网址的定义可能是
resources :users do
resources :events
您的其他匹配规则match '/events', :to => 'events#show'
很危险,因为它会覆盖正常的索引路由。您想要展示的活动的ID来自哪里?
档案events_controller.rb
EventsController#create
方法中,current_user
来自何处?在您if @event.save
的路径render :action => :show
结束redirect_to @event
。这将
此处的正常用法是,您使用@event
,它将使用正确的操作并显示正确的视图。
我不会再进一步,但我会先改变这两个文件。您确定puts
未被保存吗?如何在路径中添加if @event.save
flash[:success] = "Event Shared"
redirect_to @event # or use redirect_to(events_url)
else
puts "Failure in storing: #{@event}"
flash[:failure] = "Event not shared."
render :new
end
语句,如:
{{1}}