如何运行一个简单的each-do循环来组合不同表中的列?(RoR)



我正试图使用每个do循环来循环两列的数据。我希望问题显示在页面上,然后是用户的电子邮件和update_last。我是个新手,不知道如何同时从不同数据库中的不同列中进行绘制。这是我的代码:

<ul>
<% @questions.each do |question| %>
<hr>
    <li><%= **question**.title %></li>
    <li><%= **question**.user_id %></li>
    <li><%= **users**.email %></li>
<% end %>
</ul>

任何帮助都会很棒。我刚开始学习RoR,有很多信息!!

提前谢谢。

-T

设置您的模型:

# app/models/user.rb
class User < ActiveRecord::Base
  has_many :questions, dependent: :destroy
end
# app/models/question.rb
class Question < ActiveRecord::Base
  belongs_to :user
end

user_id列添加到questions表:

rails g migration AddUserIdToQuestions user_id:integer
rake db:migrate

然后,在相应的控制器操作中:

def your_action_method
  @user = User.find(1) # find a user
end

然后,在您相应的视图中:

<ul>
  <% @user.questions.each do |question| %>
      <li><%= question.title %></li>
      <li><%= question.user_id %></li>
      <li><%= @user.email %></li>
  <% end %>
</ul>

这是一个基本的工作设置,这样你就可以启动了。但是,还有更多的事情要做。一定要看看官方的Rails协会指南。

此外,在创建所属对象(question)时,必须将其关联到适当的所有者对象(user),以便在任何时间点执行:user.questions以获得特定userquestions。类似这样的东西:

@user = User.find(1)
@question = Question.create(title: 'Title', body: 'body', user_id: @user.id)

您还可以在Question模型中添加活动记录验证,以确保创建question记录时存在user_id

# app/models/question.rb
class Question < ActiveRecord::Base
  belongs_to :user
  validates :user_id, presence: true
end

了解活动记录关联。安装用户在您的模型中有许多问题。然后,当你在每个块内以用户作为单个对象的身份迭代你的users集合对象时,你会有一个方法问题(例如user.equestions)。现在迭代user.equestures,你会收到该特定用户的问题。http://guides.rubyonrails.org/association_basics.html

最新更新