gpt4 book ai didi

ruby-on-rails - find_commentable 返回未定义的方法 `comments' for nil :NilClass

转载 作者:行者123 更新时间:2023-12-01 16:09:15 24 4
gpt4 key购买 nike

当我尝试创建新注释(多态关系)时,我在创建方法中不断收到 nil:NilClass 的未定义方法“注释”。我浏览了与此相关的其他几个问题,但似乎无法找到我的表单/ Controller 有什么问题。

这是我的一般评论部分:

<%= form_for [@commentable, Comment.new] do |f| %>
<%= f.text_area :content %>
<%= f.submit "Post" %>
<% end %>

请注意,这是在我的旅行优惠/显示页面中呈现的。表格呈现良好。如果我更改 form_for 来传递参数 [@commentable, @comment],我会收到错误 undefined methodmodel_name' for NilClass:Class`

路线.rb

resources :users 
resources :traveldeals

resources :traveldeals do
resources :comments
end

resources :users do
resources :comments
end

Railscasts 将上述内容写为 resources :traveldeals, :has_many => :comments,但我相信这是过时的语法。

comments_controller.rb

class CommentsController < ApplicationController
before_filter :authenticate, :only => [:create, :destroy]

def new
@comment = Comment.new
end

def create
@commentable = find_commentable
@comment = @commentable.comments.build(params[:comment])
@comment.user_id = current_user.id

if @comment.save
flash[:success] = "Successfully saved comment."
redirect_to root_path
else
redirect_to current_user
end
end

private

def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end

end

编辑:添加了解决方案,因此上面的代码对我有用。

最佳答案

您的 form_for 中有 @commentable,但该变量设置在哪里?它似乎没有设置,我认为这就是错误的原因。另请参阅my answeryour other question .

关于ruby-on-rails - find_commentable 返回未定义的方法 `comments' for nil :NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com