我是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 %>
答案 0 :(得分:0)
在控制器中的实例变量中检索模型,然后以您可以使用的形式:
<% @model.parts.each do |x| %> <%= x.name %> <% end %>
注意:&#34;型号&#34;不是保留字,但我建议不要将它用作类名。