Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在对象为零的位置分配id_Ruby On Rails_Devise - Fatal编程技术网

Ruby on rails 在对象为零的位置分配id

Ruby on rails 在对象为零的位置分配id,ruby-on-rails,devise,Ruby On Rails,Devise,这是我的问题。我正在与这个错误作斗争 ActionView::Template::Error (undefined method `id' for nil:NilClass): 37: <ul class="dropdown"> 38: <li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %>&l

这是我的问题。我正在与这个错误作斗争

ActionView::Template::Error (undefined method `id' for nil:NilClass):
37:               <ul class="dropdown">
38:                 <li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %></li>
39:                 <li><%= link_to 'Edit Profile', edit_developer_registration_path %></li>
40:                 <li><%= link_to 'Edit Info', edit_developer_developer_info_path(current_user.id, current_user.developer_info.id) %></li>
41:               </ul>
42:             </li>
43:             <li><%= link_to 'Dashboard', developer_path(current_user) %></li>
ActionView::Template::Error(nil:NilClass的未定义方法“id”):
37:
    38:
  • 39:
  • 40:
  • 41:
42: 43:
  • 当开发人员(用户)注册时,它会将其重定向到配置文件页面,其中有导航栏(Desive)。导航栏有一个带有编辑链接的下拉菜单。如果我的开发人员已经注册,那么我不会收到任何错误,因为我为当前用户.developer\u info.id提供了一个id,但是如果他没有注册,那么我会收到一个错误
    为nil:NilClass
    未定义的方法'id'


    到目前为止,我在这里找到的解决方案是在适当的控制器中创建类
    @developer\u info=DeveloperInfo.new
    的实例,并将其
    @developer\u info.id
    传递到
    application.html.erb
    。但我必须使用哪个控制器?我解决问题的方向正确吗?我无法访问开发人员注册的
    designe
    控制器。提前感谢您的帮助。

    最简单的方法是检查当前用户的开发者信息并隐藏/显示链接。如果用户未注册,则无需编辑任何内容,因此无需显示任何内容

    <ul class="dropdown">
      <li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %></li>
      <li><%= link_to 'Edit Profile', edit_developer_registration_path %></li>
    
      <% if current_user.developer_info %>
       <li><%= link_to 'Edit Info', edit_developer_developer_info_path(current_user.id, current_user.developer_info.id) %></li>
      <% end %>
    </ul>
    

    最简单的方法是检查当前用户的开发者信息并隐藏/显示链接。如果用户未注册,则无需编辑任何内容,因此无需显示任何内容

    <ul class="dropdown">
      <li><%= link_to 'Add Info', new_developer_developer_info_path(current_user.id) %></li>
      <li><%= link_to 'Edit Profile', edit_developer_registration_path %></li>
    
      <% if current_user.developer_info %>
       <li><%= link_to 'Edit Info', edit_developer_developer_info_path(current_user.id, current_user.developer_info.id) %></li>
      <% end %>
    </ul>
    

    我建议仅当
    当前用户
    在页面中有
    开发者信息
    时才显示该链接,您正在显示添加开发者信息、编辑用户配置文件等选项,因此只有在用户登录时才应清楚显示该链接。在动作之前包括
    :在控制器中验证用户
    仅使用
    传递方法名称:[:我的仪表板动作]
    如果您有选择地想为几个动作启用它,您是否已修复此问题?@RockwellRice是的,我已修复。感谢您的回答我建议仅当
    当前用户
    在页面中有
    开发者信息
    时才显示该链接,您正在显示添加开发者信息、编辑用户配置文件等选项,因此仅当用户登录时才应清楚显示该链接。在动作之前包括
    :在控制器中验证用户
    仅使用
    传递方法名称:[:我的仪表板动作]
    如果您有选择地想为几个动作启用它,您是否已修复此问题?@RockwellRice是的,我已修复。谢谢你的回答