2012-08-06 46 views
0

我试图让这个人谁不人账户/未登录可以看到用户和所有用户帖子列表..RoR:我如何让人们在未登录的情况下查看用户链接?

我users_controller.rb

class UsersController < ApplicationController 
    before_filter :signed_in_user, 
       only: [:index, :edit, :update, :destroy] 
    before_filter :correct_user, only: [:edit, :update] 
    before_filter :admin_user,  only: :destroy 

    def index 
    @users = User.paginate(page: params[:page]) 
    end 

    def show 
    @user = User.find(params[:id]) 
    @microposts = @user.microposts.paginate(page: params[:page]) 
    end 

我猜测,before_filter:signed_in_user是什么让它只有登录用户才能访问用户列表/查看用户配置文件。我怎样才能改变这个没有得到一个错误?

当前,当我删除第3行上的索引部分时,出现以下错误。

未定义的方法`admin?'对于零:NilClass

这在/app/views/users/_user.html.erb

<li> 
2: <%= gravatar_for user, size: 52 %> 
3: <%= link_to user.name, user %> 
4: <% if current_user.admin? && !current_user?(user) %> 
5:  | <%= link_to "delete", user, method: :delete, confirm: "You sure?" %> 
6: <% end %> 
7: </li> 
+0

只是删除数组的索引是不够的? 如果没有,请为我们提供更多信息:错误,意外的行为... – Nibbler 2012-08-06 22:54:34

回答

0

4行我假设你有你的routes.rb文件类似root :to => 'users#index'。对于

常见的解决方案行为“入/签在没有签署”涉及有条件重定向根据认证状态,或使视状态下的各种谐音。

根据index,您的@users实例变量将始终包含分页的用户模型,而不管状态如何。但是,我们无法知道什么是signed_in_user。如果您在代码中搜索def signed_in_user,则可以看到它的功能。这可能会揭示一些关于应用程序如何处理身份验证的状态 - 或还如何进行,如果这是你正在构建什么。

更新

所以看起来你是不是填充current_user对象。这通常是一个将返回对象的方法。

如果使用的是设计,你可能需要做一些额外的配置它,以提供给您的观点,即current_user helper方法。

nil错误是由于current_user返回nil或根本不存在而造成的。所以它基本上是尝试nil.admin?并导致错误被引发。

也许你正在寻找的逻辑是,

<li> 
<%= gravatar_for user, size: 52 %> 
<%= link_to user.name, user %> 
<% if current_user.present? && current_user.admin? && !current_user?(user) %> 
| <%= link_to "delete", user, method: :delete, confirm: "You sure?" %> 
<% end %> 

您也可以调查current_user从Rails调试控制台的值。您可以在您的控制器中添加一条debugger声明,然后四处播放。此外,您还可以使用Rails的控制台(命令行运行rails console)和玩有太多。

更新2

那么,为什么它有填充CURRENT_USER 对象时我有没有问题:指数。为什么会移除(见问题 以上)的原因CURRENT_USER成为无人区

我们无法知道什么是在signed_in_user方法做进一步调查。

但是,我有一个预感,current_user == niltrue,因为你还没有登录。

+0

那么为什么当我包含index时,没有填充current_user对象的问题。为什么要删除它(请参阅上面的问题)会导致current_user变为无人值守 – BigBoy1337 2012-08-08 02:44:01

相关问题