%= f.text_area :body %><%= f.hidden_fie">
我一直收到预期的帖子,得到字符串错误。如果有人能帮助我,请提前表示感谢。
<% 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
发布于 2010-11-22 22:18:17
您的第二个重定向应该是:
redirect_to(:controller=>"posts" ,:action=>'show', :id=> @comment.post.id)
不过,看看这里,你肯定可以使用一些更好的模式来清理东西。如果您正在使用RESTful路由,我会将您的创建操作更改为:
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传递。
发布于 2010-11-22 20:33:46
首先,您不应该将post.id
更改为@post.id
(或者创建一个post对象)吗?
https://stackoverflow.com/questions/4249856
复制相似问题