我正试图使用每个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
以获得特定user
的questions
。类似这样的东西:
@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