我的模型有Chords,它通过Chordnotes与Notes有多对多的关系。我的和弦/表演看起来像这样:
<% @chord.notes.each do |note| %>
<li id="NoteID<%= note.id %>" >
<span class="content"><%= note.name %> (<%= note.description %>) (ID: <%= note.id %>)</span>
<span class="timestamp">
Created <%= time_ago_in_words(note.created_at) %> ago.
</span>
<span class="content">
<%= link_to "remove (not working)", '#' %>
</span>
</li>
<% end %>
我想要删除link_to标签,而不是音符,而是将音符链接到和弦的Chordnote。我试图通过引用&lt;中的#id来做到这一点。 li> tag,它是Note的ID,并从用户所在的/ show页面传递Note ID和Chord ID。我的Chordnote控制器如下所示:
def destroy
@chord = Chord.find(chord-id) <-- how do I get this chord id??
@note = Note.find(note-id) <-- how do I get this note id??
Chordnote.find_by(note_id: @note.id, chord_id: @chord.id).destroy
redirect_to chord_path(@chord)
end
当我使用ID#的硬编码chord-id和note-id时,此销毁操作有效,但我无法弄清楚如何从和弦/显示页面传递相关的音符和和弦ID。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
这是未经测试的,请注意。但是你试过通过link_to传递相关数据吗?
<% @chord.notes.each do |note| %>
<li id="NoteID<%= note.id %>" >
<span class="content"><%= note.name %> (<%= note.description %>) (ID: <%= note.id %>)</span>
<span class="timestamp">
Created <%= time_ago_in_words(note.created_at) %> ago.
</span>
<span class="content">
<%= link_to "remove (not working)", {controller: "whatever_controller", action: "destroy", chord_id: @chord.id, note_id: note.id } %>
</span>
</li>
<% end %>
然后你可以在destroy方法中访问这些
def destroy
@chord = Chord.find( params[:chord_id] )
@note = Note.find( params[:note_id] ) <-- how do I get this note id??
Chordnote.find_by(note_id: @note.id, chord_id: @chord.id).destroy
redirect_to chord_path(@chord)
end