首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >CommentsController#create中的ActiveRecord::AssociationTypeMismatch不匹配

CommentsController#create中的ActiveRecord::AssociationTypeMismatch不匹配
EN

Stack Overflow用户
提问于 2010-11-23 04:21:05
回答 2查看 785关注 0票数 0

我一直收到预期的帖子,得到字符串错误。如果有人能帮助我,请提前表示感谢。

代码语言:javascript
代码运行次数:0
运行
复制
<% form_for :comment, :url=>{:controller=>"comments", :action=>"create"} do |f|%>
<p>
<%= f.label :body, "New Comment"%><br />
<%= f.text_area :body %>
<%= f.hidden_field :post, :value=>@post.id %>
</p>
<p><%= f.submit "Add Comment"%></p>
<% end%>

def create
   @comment = Comment.create(params[:comment])
   if @comment.save
      redirect_to(:controller=>"posts" ,:action=>'index')
   else
      redirect_to(:controller=>"posts" ,:action=>'show', :id=>"post.id")
   end
end
EN

回答 2

Stack Overflow用户

发布于 2010-11-23 06:18:17

您的第二个重定向应该是:

代码语言:javascript
代码运行次数:0
运行
复制
redirect_to(:controller=>"posts" ,:action=>'show', :id=> @comment.post.id)

不过,看看这里,你肯定可以使用一些更好的模式来清理东西。如果您正在使用RESTful路由,我会将您的创建操作更改为:

代码语言:javascript
代码运行次数:0
运行
复制
def create
  @post = params[:id]
  @comment = @post.comments.build(params[:comment])

  if @comment.save
    redirect_to posts_url
  else
    redirect_to post_url(@post)
  end
end

这将允许您删除表单中的隐藏字段,因为它应该作为ID通过URL传递。

票数 1
EN

Stack Overflow用户

发布于 2010-11-23 04:33:46

首先,您不应该将post.id更改为@post.id (或者创建一个post对象)吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4249856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档