0

我的模型有 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。我试图通过引用 < li > 标签中的#id(即 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 进行硬编码时,此销毁操作有效,但我无法弄清楚如何从 chords/show 页面传递相关的 Note 和 Chord ID。

任何帮助将不胜感激,谢谢!

4

1 回答 1

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
于 2013-08-15T02:54:02.587 回答