我正在尝试允许对嵌套资源发表评论,并且我在app / controllers / comments_controller.rb中为#获取了一个未定义的方法'comment':7:当我选择创建注释按钮时,在`create'中。由于我还是ruby和rails的新手,我在入门指南中遵循了代码,我似乎无法弄清楚为什么会出错。
协会是:
has_many :comments
belongs_to :restaurant
在我的路线
resources :restaurants do
resources :comments
end
在评论控制器中
def create
@restaurant = Restaurant.find(params[:restaurant_id])
@comment = @restaurant.comments.create(params[:comment])
redirect_to restaurant_path
end
在我的餐厅展示模板
<%= form_for([@restaurant, @restaurant.comments.build]) do |f| %>
<h2>Add a comment</h2>
<div>
<%= f.text_area :body %>
</div>
<div>
<%= f.submit %>
<% end %>
答案 0 :(得分:0)
您应该在create statement
的第一行执行以下操作raise params.to_yaml
你应该看到类似下面的内容
utf8: ✓
authenticity_token: ...
comment: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
commenter: Test Commenter
body: Test Comment
commit: Create Comment
action: create
controller: comments
restaurant_id: '1'
您网站的其余部分应如下所示
<强> comments_controller.rb 强>
def create
@restaurant = Restaurant.find(params[:restaurant_id])
@comment = @restaurant.comments.create(params[:comment])
redirect_to restaurant_path(@restaurant)
end
<强> comments.rb 强>
class Comment < ActiveRecord::Base
has_many :comments
belongs_to :restaurant
end
<强> restaurants.rb 强>
class Restaurant < ActiveRecord::Base
attr_accessible :content, :name, :title
has_many :comments
end
你可能错过了指南中的一步。其他一切看起来都没问题。