阻止返回用户而不是协作者

时间:2016-04-25 19:25:10

标签: ruby-on-rails

我需要帮助处理返回错误生成链接的do块。我知道这是一个简单的解决办法,但我似乎无法弄清楚。

我正在构建维基百科的应用程序克隆,其中有维基,用户和现在的合作者。此克隆用于项目教程,但将协作者实现到视图中的具体步骤让我感到困惑。通过下面发布的代码,我在我的用户#show中获得了当前用户的生成链接。 我真正需要的是当前用户是协作者的wiki列表。

如果需要任何其他代码来帮助我解决问题,请告诉我,并提前感谢您的帮助。

用户显示视图

    <div class="col-sm-4">
      <div class="col-md-4">
        <% @collaborator.each do |collaborator| %>
        <div class="row">
          <ul>
            <li><%= link_to collaborator %></li>
          </ul>
        </div>
        <% end %>
      </div>
    </div>

用户控制器

def show
    @user = User.find(params[:id])
    @wikis = @user.wikis
    @wiki = Wiki.find(params[:id])
    @collaborators = Collaborator.all
    @collaborator = @wiki.collaborators.find_by(:user_id => current_user.id)
end

用户模型

class User < ActiveRecord::Base
  has_many :wikis
  has_many :collaborators
  has_many :collaborating_wikis, through: :collaborators, foreign_key: "wiki_id", class_name: "Wiki"
  validates :wiki_id, presence: true
end

Wiki模型

class Wiki < ActiveRecord::Base
  belongs_to :user
  has_many :collaborators
  has_many :users, through: :collaborators
  validates :user_id, presence: true
end

协作者模型

class Collaborator < ActiveRecord::Base
  belongs_to :user
  belongs_to :wiki
  validates :wiki_id, :user_id, presence: true
  validates :wiki_id, uniqueness: { scope: [:wiki_id, :user_id] }
end

1 个答案:

答案 0 :(得分:0)

你在粗体文字中说的话和粗体文字前的位似乎与我相矛盾,但是(无法克隆你的代码并使用它)来检索协作者是当前用户的wiki集合,我怀疑你需要的是:

控制器:
@collaborating_wikis = current_user.collaborating_wikis

在你看来:

<% @collaborating_wikis.each do |collaborating_wiki| %>
  <%= link_to "Wiki", wiki_path(collaborating_wiki) %>
<% end %>