我正在开发一个基本的应用程序,它具有面向公众的形式(查询),任何人都可以填写并提交。然后存储结果供公司做他们想做的事。
我确保如果用户没有登录,他们只能访问创建页面,但是一旦他们按预期提交表单,他们就会被带到登录页面,因为它试图向他们展示展示页面。
我当前的控制器如下:
# 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) }
答案 0 :(得分:2)
是的,如果创建成功,您当然可以从控制器redirect_to("http://any.url.com/you/want")
或做任何您想做的事情。重定向到show
操作只是一种常见的模式。
这真的是你想要做的吗?如果您在提交表单后将用户重定向到外部网站,则无法向他们提供有关刚刚发生的事情的任何反馈。用户可能会再次尝试提交查询,或者更糟糕的是,他们可能会认为出现了问题,只是忘了它,失去兴趣等等。我强烈建议您创建一个“感谢您的查询!”页面并重定向匿名用户。