【问题标题】:Ruby on Rails: why does the content of each child print out when I iterate over them?Ruby on Rails:为什么当我迭代每个孩子的内容时会打印出来?
【发布时间】:2015-08-21 13:49:47
【问题描述】:

我有以下型号:

class Question < ActiveRecord::Base
    has_many :ratings
end

class Rating < ActiveRecord::Base
  belongs_to :question
end

我在问题的 show.html.erb 文件中也有以下代码:

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @question.name %>
</p>

<% if @ratings.blank? %>
    <p>There are no ratings for this question.</p>
<% else %>
    <ul>
        <%= @ratings.each do |rating| %>
            <li>
                <%= rating.name %>
                <%= link_to "Show", rating %>
            </li>
        <% end %>
    </ul>
<% end %>
<%= link_to 'Edit', edit_question_path(@question) %> |
<%= link_to 'Back', questions_path %>

相关questions_controller.rb条目如下:

def show
  @question = Question.find(params[:id])
  @ratings = Rating.where(question_id: @question.id)
  respond_with(@question)
end

我一生都无法理解为什么输出包含子对象的内容,以及我在迭代中创建的无序列表项。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4.1


    【解决方案1】:

    尝试删除此行中的=&lt;%= @ratings.each do |rating| %&gt;

    【讨论】:

    • 哦,谢谢...非常感谢,它总是是您忽略的最简单的事情!
    • 至少你知道你再也不会爱上这个了:)
    • 好吧,如果我这样做了,希望我能在 SO 上找到我自己的问题! :D
    【解决方案2】:

    在每个循环中使用 - but =

    - @pages.each do |x|
     p = x.id
     p = x.xx
    

    这就是你想要的。

    另外,我建议你使用 slim 来代替 erb。

    【讨论】:

    • 在 ERB 中,- 是可选的,slim 的推荐是完全没有根据的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    相关资源
    最近更新 更多