Rails控制器 - 创建后重定向到网站?

时间:2010-09-16 10:42:56

标签: ruby-on-rails redirect controller

我正在开发一个基本的应用程序,它具有面向公众的形式(查询),任何人都可以填写并提交。然后存储结果供公司做他们想做的事。

我确保如果用户没有登录,他们只能访问创建页面,但是一旦他们按预期提交表单,他们就会被带到登录页面,因为它试图向他们展示展示页面。

我当前的控制器如下:

# POST /enquiries
  # POST /enquiries.xml
  def create
    @enquiry = Enquiry.new(params[:enquiry])

    respond_to do |format|
      if @enquiry.save
        format.html { redirect_to(@enquiry, :notice => 'Enquiry was successfully created.') }
        format.xml  { render :xml => @enquiry, :status => :created, :location => @enquiry }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @enquiry.errors, :status => :unprocessable_entity }
      end
    end
  end

我认为这条线需要改变:

format.html { redirect_to(@enquiry, :notice => 'Enquiry was successfully created.') }

是否可以这样做:

format.html { redirect_to(http://www.google.com) }

1 个答案:

答案 0 :(得分:2)

是的,如果创建成功,您当然可以从控制器redirect_to("http://any.url.com/you/want")或做任何您想做的事情。重定向到show操作只是一种常见的模式。

这真的是你想要做的吗?如果您在提交表单后将用户重定向到外部网站,则无法向他们提供有关刚刚发生的事情的任何反馈。用户可能会再次尝试提交查询,或者更糟糕的是,他们可能会认为出现了问题,只是忘了它,失去兴趣等等。我强烈建议您创建一个“感谢您的查询!”页面并重定向匿名用户。