0

我希望我的表单提交到的 url 遵循此模式

/tournaments/:id/matches

在我的应用程序中,我可以成功构建一个与此行一起使用的 href

a.btn.btn-success href=url_for(controller: :tournaments, action: :matches, id: tournament.id) Button text

这是我的表格(使用苗条)

  = form_tag({:controller => :tournaments, :action => :matches}, :method => :get) do                                                                                           
    select name="id"                                                           
      - @all_tournaments.each do |tournament|                                  
        - if tournament.id == @tournament.id                                   
          option value="#{tournament.id}" selected="selected" #{tournament.name}
        - else                                                                 
          option value="#{tournament.id}" #{tournament.name}                   
    br                                                                         
    input.btn.btn-success type='submit' value='Submit'          

表单代码正确地构造了一个带有选择框的表单。但是当我在这个网址时:

/tournaments/4/matches

并提交带有选项 6 的表单,它会将我发送到此 url

/tournaments/4/matches?utf8=%E2%9C%93&id=6

id=6 在查询部分。我想要的是我的表格提交给:

/tournaments/6/matches

我如何构建我的表单以使其正常工作?

我正在运行 ruby​​ 1.9.3 和 rails 3.2.11。

我的路线

resources :tournaments do
  get 'matches', :on => :member 
4

1 回答 1

0

我认为这是javascript的工作,而不是rails,如果你必须指定url/tournaments/:id/matches

您可以在选择锦标赛时触发事件并修改表单的 url。

$(function(){
    $('select#id').change(function(){        
        $('form').attr('url', '/tournaments/'+$(this).val()+'/matches');
    });
});

小提琴

或者你可以定义一个像get 'tournaments/matches'. 只需将 id 放入参数列表即可。

于 2013-08-21T03:25:43.140 回答