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 に答える