2012-11-08 47 views
0

当我刷新页面我得到这个错误信息:路径规格似乎并不匹配生成的方法

ActionController::RoutingError (No route matches {:action=>"value", :controller=>"round"}): 
    app/views/surveys/survey.html.erb:28:in `block in _app_views_surveys_survey_html_erb___3955880096442191391_70175035205180' 
    app/views/surveys/survey.html.erb:22:in `_app_views_surveys_survey_html_erb___3955880096442191391_70175035205180' 
    app/controllers/surveys_controller.rb:16:in `block (2 levels) in survey' 
    app/controllers/surveys_controller.rb:14:in `survey'  
    Rendered /Users/pitosalas/.rvm/gems/[email protected]/gems/actionpack-3.2.8/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms) 

我感到很困惑这个。为什么引用program_participant_round_value_path引起该路线丢失?

这是我的路线文件:

root to: 'programs#index' 
    resources :programs do 
    resources :participants do 
     get 'survey' => 'surveys#survey' 
    end 
    resources :questions 
    resources :rounds 
    member do 
     get 'report' => 'reports#report' 
    end 
    end 
    resources :program do 
    resources :participant do 
     resources :round do 
     put :value 
     end 
    end 
    end 

而这里的相关耙路线:

program_participant_round_value PUT /program/:program_id/participant/:participant_id/round/:round_id/value(.:format) round#value 

我有一个控制器动作回合#值。

这里的视图的相关部分:

<%= content_tag :table do %> 
    <%= content_tag :thead do %> 
    <% 5.times do |q| %> 
     <%= content_tag :th, "1" %> 
    <% end %> 
    <% end %> 
    <% form_tag program_participant_round_value_path do %> 
    <%= content_tag :tbody do %> 
     <%= render partial: 'surveys/value', collection: @values %> 
    <% end %> 
    <%= submit_tag "Save" %> 
    <% end %> 
<% end %> 

谢谢!

回答

1

program_participant_round_value航线期待几个参数:

  • :program_id
  • :participant_id
  • :round_id

您需要为那些当你调用program_participant_round_value_path辅助参数提供值:

program_participant_round_value_path(program_id: @program, participant_id: @participant, round_id: @round) 

当然,根据您在控制器中定义它们的方式,变量名称等可能会略有不同。

+0

而这会影响它寻找的路线?奇。让我尝试。谢谢! – pitosalas

+0

好的进展,但现在我得到的错误:没有路由匹配{:action =>“value”,:controller =>“round”,:program => 1,:participant => 2,:round => 9}我需要对路线进行一些更改。但在我走下这条路之前,我宁愿提交表单的网址看起来像./program/1/participant/2/round/3/update。你似乎知道这个东西很冷。你能给我一个指针吗?谢谢10^6 – pitosalas

+0

一定要将'method::put'作为参数传递给'form_tag'。 –

相关问题