繁体   English   中英

Ruby on Rails,显示来自多个模型实例的多个属性

[英]Ruby on Rails, displaying multiple attributes from multiple model instances

在我的Ruby on Rails项目中,我有一个Country模型类和一个Proposal模型类。 每个国家/地区都有许多提案,每个提案都属于一个国家/地区。 每个提案有30个问题(属性)。 在我的查看页面中,我想显示一个国家提出的每个提案的每个问题。

到目前为止,我有:

<div class="relative"> 
   <% @country.proposals.each do |proposal| %> 
     <h2>Food and Medicine:</h2><br>
         <div class="relative2">
           <p>List of prohibited drugs:</p>
           <p><% proposal.q1 %></p>
         </div>
     <h2>Liquids and Gels:</h2><br>
         <div class="relative2">
           <p>List of prohibited liquids/gels:</p>
           <p><% proposal.q2 %></p>
           ...
      ...
   <% end %>
</div>

只要该国家有与其相关的提案,标题就可以很好地显示。 但是,投标属性没有出现在我放置它们的位置(在标题之间)。 我可以确认属性不为空。

提案表:

create_table "proposals", force: :cascade do |t|
  t.string   "status",     default: "Pending"
  t.text     "q1"
  t.text     "q2"
  ...
  ...
  t.text     "q29"
  t.text     "q30"
  t.datetime "created_at",                     null: false
  t.datetime "updated_at",                     null: false
  t.integer  "country_id"
end

你忘记了等号。 你应该做:

<p><%= @proposals_q2 %></p>

代替:

<p><% @proposals_q2 %></p>

另外,您应该从循环中删除等号。

<% @country.proposals.each do |proposals| %>

代替:

<%= @country.proposals.each do |proposals| %>

在ERB中, <%= expression %>用于将评估后的表达式注入DOM。 <% expression %>用于评估表达式,不对其执行任何操作。 希望在第一行对@country.proposals.each {...}的结果求值并注入到DOM中,因此您希望它没有等号,而您确实希望每个实例变量被注入到DOM中,因此您希望它们具有等号。

顺便说一句,我假设@proposals_q1@proposals_q2等在控制器操作中已初始化。 相反,如果您在Proposal模型上将q1q2等作为属性,那么应该使用以下方法代替使用@proposals_q1

<div class="relative"> 
   <% @country.proposals.each do |proposal| %> 
     <h2>Food and Medicine:</h2><br>
         <div class="relative2">
           <p>List of prohibited drugs:</p>
           <p><%= proposal.q1 %></p>
         </div>
     <h2>Liquids and Gels:</h2><br>
         <div class="relative2">
           <p>List of prohibited liquids/gels:</p>
           <p><%= proposal.q2 %></p>
           ...
      ...
   <% end %>
</div>

您正在反向使用<%=<% <%=输出到页面。 <%运行Ruby代码,但不输出任何内容。

就目前而言,您正在输出<%= @country.proposals.each的结果,而没有输出<% @proposals_q1 这意味着,在循环内部,行<% @proposals_q1 %>绝对无效,但是在完成整个循环之后, <%= @country.proposals.each...输出proposals

您需要使用<%= @proposals_q1 %>来输出该变量的内容,并在循环内部编写的标记内,并且您需要使用<% @country.proposals.each... %>因为没有使用<%=产生的有用输出。

改变这个

<%@ proposals_q1%>

“对此:”

<%= @ proposals_q1%>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM