我试图在 Rails 中从一个 Controller 重定向到另一个 Controller ,但出现此错误:
undefined method `call' for nil:NilClass
代码非常简单(在
def create
方法中):@blog_post_comment = BlogPostComment.new(params[:blog_post_comment])
respond_to do |format|
if @blog_post_comment.save
flash[:notice] = 'Comment was successfully created.'
redirect_to(@blog_post_comment.blog_post)
else
render :action => "new"
end
end
保存正常,值进入数据库。如何解决重定向失败?
形式:
<% form_for @blog_post_comment do |f| %>
<%= f.hidden_field :blog_post_id %>
...
更新:
经过一番调查,原来问题出在
respond_to do |format|
这一行。在 blog_post_comment
Controller 。一旦我删除它,现在一切正常。
最佳答案
假设你有一个关联,你可以像这样找到你的评论:
@blog_post = BlogPost.find(params[:blog_post_id])
@blog_post_comment = @blog_post.comments.build(params[:blog_post_comment])
进而
respond_to do |format|
if @blog_post_comment.save
flash[:notice] = 'Comment was successfully created.'
redirect_to(@blog_post)
else
render :action => "new"
end
end
如果您没有关联,请按照以下方式进行设置:
在您的 BlogPost 模型中,您应该有以下行:
has_many :blog_post_comments
在你的 BlogPostComment 模型中,你应该有:
belongs_to :blog_post
在routes.rb,你应该有:
map.resources :blog_post_comment, :has_many => 'blog_post_comments'
关于ruby-on-rails - 重定向到 Rails 中的另一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631945/