解决方案:
我更改了这行代码,现在显示完美。
<% if answer.user == current_user %>
到
<% if answer.user == @user %>
我昨晚发布了一个类似的问题,但这是一个新问题。
我正在构建一个问题/答案应用程序。问题是静态的并且是提供的,而不是用户生成的。正在通过嵌套关系访问数据。
在个人用户页面上,我使用以下代码显示该特定用户的问题/答案。它工作得很好。不幸的是,我希望用户能够分享他们的个人资料页面,并且通过设置方式,用户只能看到他们自己的东西,而不是其他人的东西。我需要更改什么,以便只有用户1的数据显示在/ users / 1上,但用户2可以查看它?
我假设它与使用params查找用户与current_user有关,但我不知道如何设置它。
以下是我的show.view中的代码。
<% @user.questions.uniq.each do |question| %>
<h3><div class="answer"><%= question.question %> </div></h3>
<% question.answers.each do |answer| %>
<% if answer.user == current_user %>
<div class="answer"><%= answer.answer %> <%= answer.created_at.strftime("(%Y)") %></div>
<% end %>
<% end %>
<% end %>
我的模特:
class Answer < ActiveRecord::Base
belongs_to :question
belongs_to :user
end
class Question < ActiveRecord::Base
has_many :answers
has_many :users, through: :answers
end
class User < ActiveRecord::Base
has_many :answers
has_many :questions, through: :answers
end
我的路线:
resources :users do
resources :answers
end
我很乐意提供其他有用的代码。谢谢!
答案 0 :(得分:1)
好的,那么你需要在用户控制器中使用这样的show方法:
@answers_to_one_question = Answer.all.where("question_id = ?", question_id)
or
@answers_to_one_question = User.all.answers.where("question_id = ?", question_id)
在节目视图中有这样的事情:
<%= render partial: "answer", collection: @answers_to_one_question, as: answer %>
我没有测试过这段代码,但逻辑是这样的。