【问题标题】:Can't access nested resource 'comments' in rails 3.0.1无法访问 rails 3.0.1 中的嵌套资源“评论”
【发布时间】:2011-01-02 13:25:21
【问题描述】:

我希望你能帮助我。

/config/routes.rb

resources :deadlines do  
  resources :comments  
end

/model/comment.rb

class Comment < ActiveRecord::Base  

  belongs_to :post, :class_name => "Post", :foreign_key => "post_id"  

end  

/model/post.rb

class Post < ActiveRecord::Base  

  has_many :comments  

end

当我想访问 http://localhost:3000/posts/1/comments/new 时,我得到:

undefined method `comments_path' for #<#<Class:0x4889d18>:0x4887138> in _form.html  

我使用“formtastic”,the _form.html.erb 看起来像这样:

<% semantic_form_for [@comment] do |form| %>  
  <% form.inputs do %>  
    <%= form.input :content %>  
  <% end %>  

  <% form.buttons do %>  
    <%= form.commit_button %>  
  <% end %>  
<% end %>

【问题讨论】:

    标签: routes ruby-on-rails-3 nested-forms formtastic


    【解决方案1】:

    你的其他型号是Post 还是Deadline?假设是Post

    resources :posts do
      resources :comments
    end
    

    在终端中运行 rake routes 以查看您的所有路线。更多信息:

    嵌套资源的语法是:

    <% semantic_form_for [@post, @comment] do |form| %>
    

    【讨论】:

    • 您好,感谢您的回复。它仍然给我错误: undefined method `cmets_path' for #:0x465b850> Extracted source (about line #1): 1: 2: 3: 4:
    • 尝试将@post = Post.find(params[:post_id]) 添加到您的 cmets 控制器的新操作中。
    • 感谢 Heikki 的帮助 ;)
    • Hey Heikki 我在这里仍然遇到问题:当我按下“创建评论”按钮时,会显示:未定义方法 comment_url' for #&lt;CommentsController:0x476f0e8&gt;. NoMethodError in CommentsController#create. app/controllers/comments_controller.rb:50:in create' app/controllers/cmets_controller.rb:48:in `create '
    • 我向 Rails 指南添加了一些相关链接,这些链接应该阐明如何使用路由助手或对象构造 url。但是,这个新问题实际上并不是原始问题的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多