[Rails] 조수 체크.box를 통해 여러 선택 등록

3731 단어 RubyRails
채용 준비.rails 5.2.3
genre(유형)를 Book 모델로 사용
↓ 이렇게 복선상자에서 여러 개를 선택하여 등록할 수 있기를 바랍니다.


왜냐하면 SF랑 드라마가 다 체크를 하고 있거든요.
유형은SF & ドラマ이다.

view


가설 유형의 목록은 배열 방식으로 @list_genre에 저장된다.
new/edit.html.erb
<%= form_for(@book, class: 'form-horizontal', role: 'form') do |f| %>

・・・ 〜略〜
        <% @list_genre.each do |genre| %>
          <div>
            <%= f.check_box :genre,
                            { multiple: true,
                              checked: @book.genre.present? ? @book.genre.split(",").include?(genre) : false },  #・・・①
                              genre, nil %>
            <span><%= genre %></span>
          </div>
        <% end %>
・・・ 〜略〜

<% end %>

controller


books_controller.rb

  def new
    @book = Book.new
    @list_genre = LIST_GENRE
  end

  def create
    @book = Book.new(book_params)
    params[:book][:genre] ? @book.genre = params[:book][:genre].join(",") : false #・・・②
    if @book.save
      redirect_to book_path(@book.id)
    else
      @list_genre = LIST_GENRE
      render :new
    end
  end
edit, 업데이트도 비슷한 느낌

보태다


①:checked:에 따라edit를 선택할 때 일치하면 선택할 수 있습니다.
sting의include?중간 부분이 일치하므로 split(",)으로 Aray를 만듭니다.
②:genre의 데이터 형식은string이기 때문에join(", "SF, ドラマ"의 형식으로 저장해야 한다.

소상


String save를 만들거나 split(",)로 Arry를 되돌려 놓으면 딱딱하고 보기 싫다.
더 좋은 방법 없을까요?

결론:이걸로 하면 될지도 몰라https://qiita.com/RaimuEr/items/58971510735c6b906c50
참조: https://qiita.com/tomoima525/items/22c215db90cc9a9b09cc

좋은 웹페이지 즐겨찾기