验证失败时路由更改

时间:2012-06-01 05:10:59

标签: ruby-on-rails ruby-on-rails-3 model-view-controller

我有一个职位空间模型。当我创建新职位时,我将类别作为一个类似的传递:

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

2 个答案:

答案 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