rails嵌套资源未定义的博客文章方法

时间:2013-01-14 06:32:28

标签: ruby-on-rails ruby

我正在尝试允许对嵌套资源发表评论,并且我在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 %>

1 个答案:

答案 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

你可能错过了指南中的一步。其他一切看起来都没问题。