gpt4 book ai didi

ruby-on-rails - 重定向到 Rails 中的另一个 Controller

转载 作者:行者123 更新时间:2023-12-01 05:45:32 26 4
gpt4 key购买 nike

我试图在 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/

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