rails 2.2.2应用程序中的observe_field不保存复选框值

时间:2011-10-14 05:15:57

标签: ruby-on-rails

我在rails应用程序中使用以下表单:

<% form_remote_for :team  do |f| %>
  <tr>
    <% 1.upto(12) do |i| %>
      <td>
        <%= f.check_box @mo[i] %>
        <%= observe_field 'team_' + @mo[i], 
          :method => :put,
          :with => "$(@mo[i] + '=') + $('team_'+@mo[i]).value" %>
      </td>
    <% end %>
  </tr>
<% end %>

@mo [i]是数据库中字段的名称(例如jan,feb,mar,... dcm)。如果我要将它们全部写出来,代码看起来就像这样:

<% form_remote_for :team  do |f| %>
  <tr>
    <td>
        <%= f.check_box :jan %>
        <%= observe_field 'team_jan', 
          :method => :put,
          :with => "'jan=' + $('team_jan').value"
    </td>
    ...
  </tr>
<% end %>

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您的:with语句有一些语法问题,而且您也没有正确插入ruby变量。试试这个:

  :with => "'#{@mo[i]}=' + $('team_#{@mo[i]}').value"

我通过获取您的预期输出'jan=' + $('team_jan').value并将jan的所有实例替换为#{@mo[i]}来获得此结果,这是插入包含月份名称的变量的方法。

此外,您可能需要添加:url选项以告知应该将ajax调用发送到何处。像这样:

<%= observe_field 'team_jan',
        :url => team_path(@team),
        :method => :put,
        :with => "'#{@mo[i]}=' + $('team_#{@mo[i]}').value" %>

我在这里猜测您所需的端点是team_path(@team),但如果不是,则替换它。