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

标签 ruby-on-rails redirect controller

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

相关文章:

ruby-on-rails - 更改 RVM ubuntu 用户文件夹

javascript - 干净利落!当用户点击 link_to image_tag 时模型的属性

apache - 两个重定向 ssl apache

Angularjs:服务多个 $resource url/数据源的服务?

jsp - 如何在jsp中获取 Controller 名称?

ruby-on-rails - 动态 SASS 生成

ruby-on-rails - Rake 或 Rails 数据库 :migrate

css - 重定向 CSS 文件中的相对路径

Grails 渲染不同 Controller 的 View

grails - Grails重定向,同时保留表单值