Ruby on rails 如何向用户显示特定链接';在rails中的特定页面上登录了什么?

Ruby on rails 如何向用户显示特定链接';在rails中的特定页面上登录了什么?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我的部分导航代码如下: <% if user_signed_in? %> <li><%= link_to 'Edit Profile', edit_profile_path(current_user.profile) %></li> <li><%= link_to 'Edit Account', edit_user_registration_path %></li> <% elsif

我的部分导航代码如下:

  <% if user_signed_in? %>
    <li><%= link_to 'Edit Profile', edit_profile_path(current_user.profile) %></li>
    <li><%= link_to 'Edit Account', edit_user_registration_path %></li>
  <% elsif user_signed_in? and params[:controller] == 'profiles#edit' %>
    <li><%= link_to 'View Profile', profile_path(current_user.profile) %></li>
    <li><%= link_to 'Edit Account', edit_user_registration_path %></li>
  <% else %>
    <li><%= link_to 'Sign up', new_user_registration_path %></li>
  <% end %>

  • 我希望根据“用户登录”的位置显示不同的链接。但是,我的
    似乎不起作用


    我做错了什么?

    profiles
    是您的控制器,
    edit
    是您的操作,因此您需要将它们指定为单独的内容:

    elsif user_signed_in? && params[:controller] == 'profiles' && params[:action] == 'edit'
    

    profiles
    是您的控制器,
    edit
    是您的操作,因此您需要将它们指定为单独的内容:

    elsif user_signed_in? && params[:controller] == 'profiles' && params[:action] == 'edit'
    

    如果要确定显示链接或隐藏链接的“url”,可以使用:

     if request.path == "/profiles/edit" 
    

    或者你想要的网址。正如您所猜测的,路径的格式也接受通配符:/profiles/*

    如果您想确定显示链接或隐藏链接的“url”,可以使用:

     if request.path == "/profiles/edit" 
    

    或者你想要的网址。正如您所猜测的,路径的格式也接受通配符:/profiles/*

    您可以使用
    params[:controller]
    ,但它只包含控制器的名称<代码>参数[:操作]将包含操作名称

    甚至清洁器也要使用
    controller\u name
    action\u name
    ,这也是可用的

    像这样:

    <% elsif user_signed_in? and controller_name == 'profiles' and action_name == 'edit' %>
    
    在你看来的某个地方。当然是暂时的:)但是你会马上知道为什么你的情况不起作用


    HTH.

    您可以使用
    参数[:controller]
    ,但它只包含控制器的名称<代码>参数[:操作]将包含操作名称

    甚至清洁器也要使用
    controller\u name
    action\u name
    ,这也是可用的

    像这样:

    <% elsif user_signed_in? and controller_name == 'profiles' and action_name == 'edit' %>
    
    在你看来的某个地方。当然是暂时的:)但是你会马上知道为什么你的情况不起作用


    HTH.

    除了其他人已经提到的以外,在编写本代码时,当
    用户登录时
    true
    时,您将始终落入第一个块,并且从不点击
    elsif
    块。
    您必须修复处理控制器和操作的条件,并将此作为第一个条件,以便您的代码能够按预期执行。

    除了其他人已经提到的内容之外,在编写此代码时,当
    user\u signed\u in?
    true
    时,您将始终进入第一个块,并且从不点击
    elsif
    块。
    您必须修复处理控制器和操作的条件,并将其作为第一个条件,以便代码按预期执行。

    从技术上讲,参数[:controller]和控制器名称之间有什么区别?一个比另一个更好吗?我个人更喜欢
    controller\u name
    。在ruby/rails中,有很多方法可以实现相同的目标,选择一种你最喜欢的方法。感谢您花时间回答和解释。从技术上讲,params[:controller]和controller_name之间有什么区别?一个比另一个更好吗?我个人更喜欢
    controller\u name
    。在ruby/rails中,有很多方法可以实现相同的目标,选择一种你最喜欢的方法。谢谢你花时间回答和解释。谢谢你的提醒。我相信你帮我省了几分钟的时间。好的,我完全忽略了:)谢谢你的提醒。我相信你帮我省了几分钟的困惑。好的,我完全忽略了这一点:)