簡體   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