如何为每个用户提供不同的索引页?

How can I provide index page differently for each user?

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

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

我正在使用 Gem 'cancancan'。

我想为每个用户提供不同的索引页面,这样只有作者才能查看帖子。

我应该如何填写“?”处的代码位置?

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

您可以创建关联并仅呈现来自具有

的用户的 post

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

然后简单地通过记录循环:

@user.associated_model.each do |u|

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

resources :users do
  resources :books 
end

现在每个用户都会拥有一本书的增删改查功能。

在你的图书控制器中,你可以为索引显示页写下:

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

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

您好!