Ruby on rails 每个on-rails模板的范围

Ruby on rails 每个on-rails模板的范围,ruby-on-rails,Ruby On Rails,我是rails的新手,我正在尝试构建一个视图,该视图将列出父母和相关子女 例: 护照上有很多签证 我想列出有关护照和护照上的签证的信息 所以我有 <% @passport_list.each do |passport| %> # passportFields <% passport.visas.each do |visa| %> <%= t.text_field :visa_type %> <% end %>

我是rails的新手,我正在尝试构建一个视图,该视图将列出父母和相关子女

例: 护照上有很多签证

我想列出有关护照和护照上的签证的信息

所以我有

<% @passport_list.each do |passport| %>
   # passportFields
   <% passport.visas.each do |visa| %>
       <%= t.text_field :visa_type %>   
   <% end %>
<% end %>

看起来rails正在尝试查找passport的属性
visa\u type
,而不是在visa中。范围如何在每个中工作?我是否可以强制它从
visa
访问
visa\u type

在我看来,您应该始终处理对象的空情况

如果您使用rails(present?是rails函数),则会出现类似的情况


而ruby数组会产生错误,因为它会响应数组方法

我想你在找表单助手。这将允许您为相关
visa
属性创建字段。将您的代码示例替换为以下内容,您应该已经准备好了

<% @passport_list.each do |passport| %>
  # passportFields
  <% t.fields_for :visas do |visa_fields| %>
    <%= visa_fields.text_field :visa_type %>
  <% end %>
<% end %>

#护照字段
您还可以按如下方式迭代列表:

<% @passport_list.each do |passport| %>
  # passportFields
  <% passport.visas.each do |visa| %>
    <% t.fields_for :visas do |visa_fields| %>
      <%= visa_fields.text_field :visa_type %>
    <% end %>
  <% end %>
<% end %>

#护照字段

有关字段的更多信息,请查看我在上面添加的链接,要针对您的用例进行进一步定制,请查看“一对多”部分。

为什么需要?您可以使用仅显示值。如果你想显示某个表单,那么你必须使用嵌套表单。当然@madyrockss,它在表单中,我省略了该信息,如果我这样使用它,如何将其转换为文本字段?
# scope on AR model
def self.awesomeville
  where(country_of_origin: "awesomeville")
end

# method queried in controller
@passport_list = Passport.all
if @passport_list.present? 
  @passport_list
else 
  Passport.none
end 

# additional filtering in view is now possible without fear of NoMethodError
@passport_list.awesomeville
<% @passport_list.each do |passport| %>
  # passportFields
  <% t.fields_for :visas do |visa_fields| %>
    <%= visa_fields.text_field :visa_type %>
  <% end %>
<% end %>
<% @passport_list.each do |passport| %>
  # passportFields
  <% passport.visas.each do |visa| %>
    <% t.fields_for :visas do |visa_fields| %>
      <%= visa_fields.text_field :visa_type %>
    <% end %>
  <% end %>
<% end %>