我正在使用rails 2.3.5。我有一个博客模型和博客有很多评论。这是我的Blog控制器显示操作
def show
@blog = Blog.find(params[:id])
@comment = Comment.new
end
我会显示博客,最后会有一个创建评论的选项。所以我在blogs / show.html.erb中添加它。
<% form_remote_for @comment do |f| %>
<%= f.label :content %>
<%= f.text_area :content, :rows => 6 %>
<%= f.hidden_field :blog => @blog %>
<%= f.submit %>
<% end %>
但是当我运行它时,我得到以下错误 博客中的NoMethodError#show
显示app#views / blogs / show.html.erb,其中第270行引发:
undefined method `blog#<Blog:0xb677d8d0>' for #<Comment:0xb67762b0>
提取的来源(第270行):
答案 0 :(得分:2)
Comment
模型应该有belongs_to :blog
Blog
模型应该有has_many :comments
在控制器中初始化注释,如下所示:
@blog.comments.new
视图应该是这样的:
<%= f.hidden_field :blog_id %>
答案 1 :(得分:1)
你必须隐藏博客的id而不是博客对象。
<%= f.hidden_field :blog_id%>
答案 2 :(得分:0)
问题在于您的f.hidden_field
行。第一个参数应该是字段中所需的@comment
的属性名称,但在您的代码中它是一个哈希。
我建议您调整show
操作以设置@comment = @blog.comments.build
,并将视图更改为f.hidden_field :blog_id
。