我有一个职位空间模型。当我创建新职位时,我将类别作为一个类似的传递:
new_jobplacement_path(:category => params[:category])
所以url看起来像这样:
http://localhost:3000/jobplacements/new?category=Corporate
但是当验证失败时,url会更改为:
http://localhost:3000/jobplacements
为什么会发生这种情况?params类别会丢失?如果验证失败,我如何通过此params类别?
我的创建操作代码是:
def create
@jobplacement = Jobplacement.new(params[:jobplacement])
if @jobplacement.save
redirect_to(jobplacement_url(@jobplacement.id,:category => @jobplacement.category), :notice => 'Job post was successfully created.')
else
render :action => "new"
end
end
答案 0 :(得分:0)
这是因为您create
行动的路线是
PUT http://localhost:3000/jobplacements
验证失败时,页面不会被重定向,因此网址仍然存在。
无论如何,这不会导致问题。
答案 1 :(得分:0)
解决了...... 补充:url => {:action => :create,:category => form.html.haml中的params [:category]}:
= form_for(@jobplacement,:url => { :action => :create, :category => params[:category]},:validate => true, :html => { :class => "form grid_6", :id => "form" }) do |f|
现在,当验证失败时,我的网址会更改为:
http://localhost:3000/jobplacements?category=Corporate