私は関係を通して多くを持っているためのフォームを作成することに少し立ち往生しています。現時点では、私のモデルでは、割り当てを介して、曲に多くのセットリストを含めることができ、その逆も可能です。
私は現在、ユーザーがセットリストに曲を追加できる編集ページに取り組んでいます。現在、ビューは次のようになっています。
<h1>Edit a Setlist</h1>
<div class="row">
<div class="span8">
<%=form_for(@setlist) do|f|%>
<%=f.label :date, "Set a date" %>
<span><%=f.date_select :date%><span>
<div>
<div id="library">
<%= render 'library' %>
</div>
<%= render 'songs_in_set' %>
</div>
<%=f.submit "Save", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
上記で部分的に参照されているライブラリ:
<table class= "table table-striped table-bordered">
<thead>
<th>Title</th>
<th>Artist</th>
<th>Add to Set</th>
</thead>
<tbody>
<% @songs.each do |song| %>
<tr>
<td><%= song.title %></td>
<td><%= song.artist %></td>
<td><%= link_to "ADD", '#' %></td>
</tr>
<% end %>
</tbody>
</table>
ライブラリ内のそのリンクを、新しい割り当てを作成するためのフォームに部分的に変換して、セットリストに曲を追加したいと思います。
私のコントローラーからの関連ビット:セットリストコントローラー:
def edit
@songs = Song.all(order: 'title')
@setlist = Setlist.find(params[:id])
@allocations = @setlist.allocations
end
def update
@setlist = Setlist.find(params[:id])
if @setlist.update_attributes(params[:setlist])
flash[:success] = "SAVED!"
redirect_to setlist_path(@setlist)
else
render 'edit'
end
end
および割り当てコントローラ:
def new @allocation = Allocation.new end
def create
@allocation = Allocation.new(params[:allocation])
if @allocation.save
flash[:success] = "Songs added"
redirect_to edit_setlist_path(@allocation.setlist_id)
else
flash[:fail] = "Error"
redirect_to edit_setlist_path(@allocation.setlist_id)
end
終わり
setlist.allocations.buildに沿って何かをしなければならないことは知っていますが、正しいパラメーターを取得するのに問題があります(個々の曲IDとセットリストIDを取得する)。曲の中にヘルパー用のフォームを入れてみました。それぞれがループしますが、うまくいかなかったようです。私は少し迷っているので、正しい方向へのポインタをいただければ幸いです。前もって感謝します