如何提交表格到具体方法?

时间:2014-04-07 15:18:05

标签: javascript jquery ruby-on-rails forms

我需要从控制器向特定方法提交表单。 我怎样才能做到这一点? 我的表格如下:

<%= form_tag({update_holidays_path, method: 'post'},{name: "exchange", id: "exchange"}) do %>
<table width="auto" border="0">
  <thead>
    <th  scope="col">Selected</th>
    <th width="50" scope="col">&nbsp;</th>
    <th  scope="col">Holidays</th>
  </thead>  
  <tbody>
  <tr>
  <td>  
    <% holidays_array = @group.holidays.all.map { |holiday| [holiday.name, holiday.id] } %>
    <%= select(:holiday_id, :name, options_for_select(holidays_array),{}, 
    {:multiple => true, :style => "width: 300px; background-color: #9FE", :width => "300", :size => 20, :id=>"left" }  ) %>
  </td>
  <td align="center">
      <%= link_to "<<", {anchor: "", remote: true}, {id: "toleft" ,  w_command: "add_holiday", w_auth: form_authenticity_token , w_controller: "groups",  w_id: @group.id} %>
      <br /><br />
      <%= link_to ">>", {anchor: "", remote: true}, {id: "toright" , w_command: "rem_holiday", w_auth: form_authenticity_token , w_controller: "groups",  w_id: @group.id} %>
  </td>    
  <td>
    <% holidays_array = Holiday.all.map { |holiday| [holiday.name, holiday.id] } %>
    <%= select(:holiday_id, :name,  options_for_select(holidays_array),{}, 
    { :multiple => true, :style => "width: 300px; background-color: #F99", :width => "300", :size => 20, :id=>"right" } ) %>
  </td>
  </tr>
  </tbody>
</table>

我想使用以下javascript提交我的左侧选择:

var save=function()
{
alert("0");
var left = document.getElementById("left");
alert(left);
var result = document.exchange;
alert(result);
result= ""
alert("3");
for(i=0;i<right.length;i++)
    {       
    result.value=result.value+","+left.options[i].value; //right.options[i].selected = true;
    alert("4,"+i+"    "+result.value);
    }
alert("5");          
result.submit();
}

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

update_holidays_path更改为控制器的路径&amp;你想打电话的行动。

答案 1 :(得分:1)

打开终端。转到rails_app_root目录并执行rake routes 这将为您提供所有可用路径的列表

例如:

 cases GET    /cases(.:format)                                    cases#index

此处cases#index表示cases是控制器名称,index是方法 因此,当您编写cases_path时,它将为此控制器和操作生成路径

因此,请在rake routes列表中查找控制器和操作的匹配路由,然后选择最左侧的文本并在其后附加_path(就像我在上面的示例中所示)然后使用此新找到的路径替换下面一行中的update_holidays_path

<%= form_tag({update_holidays_path, method: 'post'},{name: "exchange", id: "exchange"}) do %>

修改

如果rake routes列表中没有该路径,则需要在routes.rb文件中添加此路径。