将DOM元素的ID传递给rails控制器

时间:2013-08-14 23:11:53

标签: javascript ruby-on-rails

我的模型有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。

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

1 个答案:

答案 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