导轨路由错误



在routes.rb中,我有:

get "survey/show" => "survey#show"
post "survey/step_2" => "survey#step_2"
post "survey/step_3" => "survey#step_3"

在 step_2.html.erb 中,我有:

<%= form_for @result, :url => { :controller => 'survey', :action => 'step_3' } do |f| %>

在 survey_controller.rb 中,我有:

def step_2
@result = Result.new(params[:result])
if @result.save
    session[:result_id] = @result.id
    render :action => "step_2"
else
    render :action => "show"
end
end
def step_3
@result = Result.find(session[:result_id])
if @result.update_attributes(params[:result])
    render :action => "step_3"
else
    render :action => "step_2"
end
end

当我在step_2上提交表格时,出现以下错误: No route matches "/survey/step_3"

我相信 Rails form_for方法可能会发出 PUT 请求,因为@result对象有一个 id。我认为您应该将form_for行更改为:

<%= form_for @result, :url => { :controller => 'survey', :action => 'step_3' }, :html => { :method => :p ost} do |f|%>

或在 routes.rb 中将路由类型更改为 put

你必须使用匹配。

match 'survey/step_3' => 'survey#step_3', :via => 'post'

我可能对 :via 的看法是错误的,但它就是这样。

相关内容

  • 没有找到相关文章

最新更新