Rails显示HABTM关系中的数据

时间:2014-07-01 11:48:21

标签: ruby-on-rails has-and-belongs-to-many

我是rails的新手,并且在弄清楚如何使用HABTM关系来显示数据时遇到了问题。 1.情况是我正在尝试创建简单的工具,其中我有分配模型的设备,每个模型可以有特定的备件。 2.我设法创建HABTM关系和表格,将模型分配给备件并将其保存到DB。 2.我希望能够为设备创建票证,在创建票证期间,用户应该能够订购备件(但仅限于此特定型号设备的部件列表!)。 3.我在设置故障单时如何显示仅用于特定型号设备的部件(我将model_id作为url中的parm传递)。可能毕竟将它保存到数据库我需要使用额外的HABTM表ticket_parts但现在我只想知道如何显示它。 4.我正在为#

获取未定义的方法`models'

非常感谢您提出有关此问题的建议和帮助!

模型看起来像:

class Model < ActiveRecord::Base
    has_and_belongs_to_many :parts
    accepts_nested_attributes_for :parts
end

class Device < ActiveRecord::Base
    belongs_to :model
end

class Part < ActiveRecord::Base
    has_and_belongs_to_many :models
    has_and_belongs_to_many :order_tickets
    accepts_nested_attributes_for :models
end

my tickets / _form.html.erb看起来像是:

  <%= form_for(@ticket) do |f| %>
  <% if @ticket.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@ticket.errors.count, "error") %> prohibited this ticket from being saved:</h2>

      <ul>
      <% @ticket.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>
  <div class="field">
    <%= f.label :counter %><br>
    <%= f.number_field :counter %>
  </div>
  <div class="field">
    <%= f.label :issue %><br>
    <%= f.text_area :issue %>
  </div>

<!-- Here i want to display the spare parts only for the specific model --> 

  <% Part.models(:model_id).each do |x| %>
  <%= x.name %>
  <% end %>


  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

1 个答案:

答案 0 :(得分:0)

在控制器中的实例变量中检索模型,然后以您可以使用的形式:

<% @model.parts.each do |x| %>
    <%= x.name %>
  <% end %>

注意:&#34;型号&#34;不是保留字,但我建议不要将它用作类名。