从关联模型中删除连接表条目

时间:2014-02-18 18:01:31

标签: ruby-on-rails

我正在尝试为连接表条目设置删除链接。

我有一个@miniatures模型,通过@lines联接表has_many @minilines

在我的@miniatures展示页面上,我使用

调用关联的@lines
<% @miniature.lines.each do |line| %> 
    <%= link_to line.name, line %>
<% end %>

一切正常。所有关联都正确等等。我要做的是添加一点删除链接。目前如下

<% @miniature.lines.each do |line| %> 
    <%= link_to line.name, line %>
  <%= link_to '<i class="fa fa-times"></i>'.html_safe, miniline_path(:miniature_id => @miniature.id, :line_id => line.id),
            :confirm => 'Are you sure?', :method => :delete %><br />
<% end %>

在我的迷你lines_controller中,我有以下销毁行动

def destroy
    Miniline.find_by_miniature_id_and_line_id(params[:miniature_id, :line_id]).destroy
    flash[:success] = "Miniature removed from product line."
    redirect_to :back
end

目前正在返回wrong number of arguments (2 for 1)

2 个答案:

答案 0 :(得分:1)

如果您的路线和控制器设置正确,您可以在终端中键入rake路线并查看minilines的删除路径。您可以使用路径发送微型和线型。然后在控制器中,而不是通过id查找。你可以做这样的事情MiniLine.find_by_miniature_id_and_line_id(miniature.id,line.id),然后销毁结果。

答案 1 :(得分:0)

您可以使用nested form进行此操作。

<%= f.fields_for :lines, :wrapper => false do |task_form| %>
    <tr class="fields">
      <td><%= task_form.text_field :name %></td>
      <td><%= task_form.link_to_remove "Remove this line" %></td>
    </tr>
  <% end %>