0

基本的に、次のコードを使用して、Webサイト上のデータベースからすべてのイベントを一覧表示しようとしています。

<table class="table">
            <thead>
            <tr>
                <th>Event</th>
                <th>Join Event?</th>
            </tr>
            </thead>
            <tbody>        
           <% @events.each do |e| %>    
           <p>              
            <tr>            
              <td>
              <div>
                <%= e.name %>
              </div>
              </td>
              <td>
              <div class="btn-group" data-toggle="buttons-radio">                                       
                 <button class="btn" class-toggle="btn-success"><i class="icon-ok"></i></button>
                 <button class="btn btn-danger active" class-toggle="btn-danger"><i class="icon-remove"></i></button>                                               
              </div>    
              </td>
            </tr>           
           </tbody>                 
            <% end %>              
           </table>  

ラジオボタンをクリックすると、イベントに簡単に参加できます。今私の問題は、このフォームをRailsに保存するにはどうすればよいですか?この例では、イベント2に参加(=クリック)しました。このフォームをデータベースに保存するための最良の方法は何ですか。理想的には、ウェブサイトの最後に「更新」または「保存」ボタンがあり、それが私に代わって行われます。

しかし、このような単純な送信ボタンをフォームに追加すると

...same code as above
          </td>
        </tr>           
       </tbody>  
            <%= f.submit 'Save form' %>        
        <% end %>              
       </table>                 

そうすれば、ラジオボタンの1つをクリックするたびに送信ボタンがトリガーされます。誰かがこの問題の修正を知っていますか?

4

1 に答える 1

0

さて、送信されると選択されたオプションの配列を送信するevent[]ラジオボタンを実行するのはかなり簡単です。

ボタンタグは次のようになり、クラスなどに合わせて調整されます。

<%= radio_button_tag event[], e.id %>

その場合、コントローラーは次のようになります。

def create
  ...
  user.events = params[:event] unless params[:event].empty?
  user.save
  ...
end

この大まかな前提は、ユーザーモデルに、予定されているイベントを格納するための列があることを前提としています。より柔軟なモデルは、user:has_many events:through=>user_eventsを持つことです。次のようになることを除いて、同じコントローラーロジックが適用されます

def create
  ...
  if params[:event]
    params[:event].each do |e|
      user.user_event.new(:event_id => e)
    end
  end
  ....
end

リソース:フォームタグヘルパー:ここで :has_manyを使用:関連付けを介して:ここ(セクション2.4)

于 2012-07-27T17:56:27.153 に答える