[英]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
模型上將q1
, q2
等作為屬性,那么應該使用以下方法代替使用@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.