帖子显示,但不保存

时间:2011-10-15 08:43:34

标签: ruby-on-rails

我刚刚开始使用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社区一直很棒!

1 个答案:

答案 0 :(得分:1)

我已经检查了您的源代码,并且目前看到以下我认为不正确的事情。如果他们对不存储事件负责,我不知道:

  1. 您的routes.rb文件包含一些我不理解的内容:

    • 如果事件belongs_to用户和用户有很多事件,则事件应保留在用户的上下文中。请参阅Rails指南中的nested resources。您对网址的定义可能是

      resources :users do
        resources :events
      
    • 您的其他匹配规则match '/events', :to => 'events#show'很危险,因为它会覆盖正常的索引路由。您想要展示的活动的ID来自哪里?

  2. 档案events_controller.rb

    • EventsController#create方法中,current_user来自何处?
    • 在您if @event.save的路径render :action => :show结束redirect_to @event。这将

      • 显示错误的视图(不是索引,而是事件控制器的显示页面。
      • 之前不会调用此操作。

      此处的正常用法是,您使用@event,它将使用正确的操作并显示正确的视图。

  3. 我不会再进一步​​,但我会先改变这两个文件。您确定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}}