2
我在構建註釋表單時遇到問題,我正在通過'commentable'使用多態關係。能夠顯示評論現在(如果我種他們),所以我認爲我真的很接近。評論表格也顯示,但是當我去提交失敗。Rails 3 - 「未定義的方法'comments_path'使用可評論的多態關聯構建註釋的錯誤
我發送到「/評論」我得到以下錯誤:
NoMethodError in CommentsController#create
undefined method `comments' for nil:NilClass
Application Trace
app/controllers/comments_controller.rb:5:in `create' ( @comment = @commentable.comments.build(params[:comment]))
**首先,爲什麼它送我去「/評論」 ??這看起來不正確
。下面是相關的代碼,讓我知道如果你需要更多。
機型:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
default_scope :order => 'comments.created_at DESC'
end
class Track < ActiveRecord::Base
has_many :comments, :as => :commentable
...
end
視圖(註釋/表格) - 這是隨後在軌#呈現爲局部顯示
<% form_for [@commentable, @comment] do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_area :name %>
</p>
<p>
<%= f.label :body %><br />
<%= f.text_area :body %>
</p>
<p><%= f.submit "Submit" %></p>
<% end %>
評論控制器:
def create
@commentable = find_commentable
@comment = @commentable.comments.build(params[:comment])
if @comment.save
flash[:notice] = "Successfully saved comment."
redirect_to :id => nil
else
render :action => 'new'
end
end
def new
@comment = Comment.new
end
private
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
路線:
resources :tracks, :has_many => :comments
resources :comments
這是我的第一篇文章,讓我知道如果我可以改善這個問題!非常感謝。
去...? ;) – socjopata
好吧,哇解決了它。如果還有一些工作要做,我會檢查這個答案,甚至是...如果我在曲目控制器中添加了@ commentable'來顯示。然而,這給了我一個沒有路線的錯誤,我終於通過改變route.rb來修復'資源:軌道做' '資源:評論' '結束' – tuddy
我很高興你解決了它:)乾杯! – socjopata