【问题标题】:How can I provide index page differently for each user?如何为每个用户提供不同的索引页面?
【发布时间】:2018-08-16 13:52:48
【问题描述】:

如何使每个用户的索引页不同?

<% if can? :edit, :destroy, :new %>
      <td><%= ? %></td>
<% end %>

我正在使用 Gem 'cancancan'。

我想为每个用户提供不同的索引页面,以便只有作者可以查看帖子。

我应该如何填写“?”处的代码地点?

【问题讨论】:

  • 当然只是:&lt;% current_user.posts.each do |post| %&gt;; &lt;td&gt;&lt;%= post.whatever_content_you_want %&gt;&lt;/td&gt;; &lt;% end %&gt;?这个问题有点不清楚-如果您可以扩展一点,我相信人们将能够提供更多帮助:)

标签: ruby-on-rails ruby web cancancan


【解决方案1】:

不确定您的目标到底是什么,但您似乎希望每个用户都有自己的索引页面并且只有该用户可以访问?

您可以创建关联并仅呈现来自用户的帖子

if user_signed_in? &amp;&amp; !@user.associated_model.nil?

然后通过以下方式简单地循环记录:

@user.associated_model.each do |u|

但是,如果您创建嵌套资源,它会更有条理。在这种情况下,每个用户都将拥有自己的完整 CRUD 功能。所以一个自己的索引页面,编辑页面,新页面等。你在 routes.rb 中创建一个嵌套资源:

resources :users do
  resources :books 
end

现在每个用户都将拥有一个图书 CRUD 功能。

在您的书籍控制器中,您可以为索引显示页面写下例如:

def index

 @user = User.find(params[:user_id]
 @book = @user.books

end

在您的视图文件中,您可以简单地为每个用户呈现每本书:

<% @user.books.each do |b| %>

 <%= b.title %>

<% end %>

由于嵌套资源,您必须在表单中添加两个模型,第一个是您的根模型,在这种情况下是用户,第二个变量是第二个资源,在这种情况下是书籍。所以简单地写下:

<%= form_for [@user, @book] do |f| %>

 <%= f.text_field :title %>

<% end %>

这只是为了展示,当然你必须根据项目中的资源和模型调整资源和模型,图书协会过去和现在都只是为了展示目的。如果您还有任何问题,请告诉我!

您好!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多