Acts_as_commentable没有得到commentable_id

时间:2014-12-25 20:29:17

标签: ruby-on-rails ruby

所以我现在已经坚持了一个小时左右。我遇到的问题是没有得到“Tour.id”。但是,如果我这样做:

commentable = Tour.find(1)
comment = commentable.comments.create

它使用正确的commentable_id和commentable_type保存。

以下是事情的展望:

show.html.erb

<%= form_for [@tour, @comment] do |f| %>
 <%= f.text_area :comment %>
<% end %>

tours_controller.rb

@tour = Tour.find(params[:id])
@comment = @tour.comments.new

comments_controller.rb

@commentable = @tour
@comment = @commentable.comments.create

的routes.rb

resources :tours do
 resources :comments
 member do
  put :submitreview
 end 
end

导致:     CommentsController中的NoMethodError #create     nil的未定义方法`comments':NilClass

请求

参数:

{"utf8"=>"✓",
"authenticity_token"=>"mxHD+yj6PKG4gCrYuGrwKEKWHOofCaoE4G7bAoEs6J4=",
"comment"=>{"comment"=>"okokok"},
"commit"=>"Create Comment",
"tour_id"=>"1"}

我在这里做错了什么?!

1 个答案:

答案 0 :(得分:0)

在评论控制器的操作中,您没有为@tour分配任何值,因此它为零。然后在下一行中调用comments。这就是你得到这个错误的原因。