Rails 4 - 使配置文件页面可共享

时间:2014-09-09 13:55:26

标签: ruby-on-rails

解决方案:

我更改了这行代码,现在显示完美。

<% 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

我很乐意提供其他有用的代码。谢谢!

1 个答案:

答案 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  %>

我没有测试过这段代码,但逻辑是这样的。