1

在 Rails 3.2 应用程序中,将表单字段添加到索引视图的最佳方法是什么?

例如,如果我有一个用户列表,并且想要在每一行中添加一个“已批准”按钮来切换数据库中的布尔字段。

#users/index.html.erb    
<table>
  <tr>
    <th>Name</th>
    <th>Approved</th>
  </tr>
  <%= for user in @users %>
    <tr>
      <td><%= user.name %></td>
      <td><%= CHECKBOX FORM GOES HERE %></td>
    </tr>
  <% end %>
</table>

我不确定如何设置表单标签和/或控制器以确保

a) 表格张贴到正确的位置和

b) 帖子在用户流程中有意义的某个点发送。

谁能指出我这种行为的任何好例子,或者建议我应该考虑什么。

4

1 回答 1

2

我们这样做的方法是向复选框添加观察者并向更新操作发送请求或仅为此功能添加新操作。添加新操作的优势在于它专注于该特定功能,没有额外的检查和其他东西。

您将更改/添加一些文件,就这样吧。希望它们很容易理解。

# view
<td><%= check_box_tag :approved, user.id, user.approved?, class: 'user-approve-cb' %>

# routes
resources :users do
  put :set_approved, on: :member
end

# js asset (using coffee)
$('.user-approve-cb:checkbox').change ->
  $.ajax
    url: '/users/' + @value + '/set_approved'
    type: 'PUT'
    data: { approved: $(this).attr('checked') }
    success: -> alert('User updated')

# controller
def set_approved
  @user = User.find params[:id]
  @user.update_column :approved, params[:approved]

  render nothing: true
end
于 2013-02-11T09:44:08.717 回答