목록에 여러 쌍의 중간 표를 표시하고 편집할 때까지

4300 단어 formRubyRailstable
무엇에 쓰입니까?내용인데 자기가 쓴 비망록이에요.
한 달 정도 공부했기 때문에 참고로 삼을 수 없습니다.
설명 수준

이미지



참고 자료


rails로 라디오 단추를 만드는 방법(모형 불합성판)
https://ch.nicovideo.jp/tokyo-webs/blomaga/ar222386
Rails formgg에서 생성된 HTML
https://maeharin.hatenablog.com/entry/20120811/p1
Rubby: 해시를 배열로 변환
http://tm.root-n.com/programming:ruby:etc:hash2array
Rubby - 반복 정렬 및 해싱 each
http://azuuun-memorandum.hatenablog.com/entry/2016/04/12/213839
Ruby on Rails 데이터 업데이트
https://qiita.com/shell/items/c9869809cba91e9c35a1
[Rails5] (신규) formwith 및 (구)formtag, form_for의 차이
https://qiita.com/hmmrjn/items/24f3b8eade206ace17e2

코드


controller
def show
  @workspace = Workspace.find(params[:id])
  @photos = @workspace.photos.all
  @users = User.all
end
 view
    # userの人数分テーブルを横に伸ばす     
          <% @users.each do |user| %>
            <th><%= user.name %></th>
          <% end %>
         </tr>

       #photoの枚数分レコードを表示   
        <% @photos.each do |photo| %>
          <tr>
            <% @users.each do |user| %>
              <td>
                <div class="btn-group btn-group-xs btn-group-vertical" data-toggle="buttons" role="group">

                  #helperにアクション記述
                  <% get_relation(photo, user) %>   
 helper
  # photo一枚毎のリレーションを取得する
  def get_relation(photo, user) 
    relationship = Relationship.where(photo_id: photo.id).where(user_id: user.id).first
    @target1 = ""
    @target2 = ""

    if relationship 
      if relationship.target == 1 then
        @target1 = " active"
      end
      if relationship.target == 2 then
        @target2 = " active"
      end

    else
    end
  end
 view
                  # helperで生成した文字列でデフォルト値を設定
                  #トグルボタンは同じname属性でグルーピングされるのでidを文字列結合してあとで取得できるように
                  <label class="btn btn-default<%= @target1 %>">
                    " 1 "<%= radio_button 'target', photo.id.to_s + '_' + user.id.to_s , 1, {} %>
                  </label>
                  <label class="btn btn-default<%= @target2 %>">
                    " 2 "<%= radio_button 'target', photo.id.to_s + '_' + user.id.to_s , 2, {} %>
                  </label>

                </div>
              </td>
            <% end %>
          </tr>
        <% end %>

      </table>
      <%= submit_tag ' 送信する ' %>
    <% end %>
controller
def create
  @relationship_keys = params[:target]
  @relationship_keys.each do |key,value|

    key = key.split("_")
    photo_id = key[0]
    user_id = key[1]

    relationship = Relationship.where(photo_id: photo_id ).where(user_id: user_id).first

    if relationship
      relationship.target = value
    else
      relationship = Relationship.new(user_id: user_id, photo_id: photo_id, target: value)
    end

    if relationship.save
    else
    end
  end

  flash[:success] = 'stasu更新完了'
  redirect_to workspace_path(params[:workspace_id])

end      

좋은 웹페이지 즐겨찾기