在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)在有意义的用户流程中的某个点发送帖子。
任何人都可以指出我对这种行为的任何好例子,或建议我应该考虑什么。
答案 0 :(得分: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