繁体   English   中英

我正在获取错误的未定义方法“空”? 对于nil:NilClass

[英]I am Getting the error undefined method `empty?' for nil:NilClass

我正在开发一个超级简单的新闻稿应用程序,对此错误感到困惑。 为什么没有nil班? 我只要求它渲染,所以为什么不能将redirect_to放到render调用所在的位置?

 <% if admin_signed_in? %>

   <p id="notice"><%= notice %></p>

   <h1>Subscribedusers</h1>

   <table>
 <thead>
  <tr>
    <th>Email</th>
    <th colspan="3"></th>
  </tr>
</thead>

<tbody>
<% @subscribedusers.each do |subscribeduser| %>
  <tr>
    <td><%= subscribeduser.email %></td>
    <td><%= link_to 'Show', subscribeduser %></td>
    <td><%= link_to 'Edit', edit_subscribeduser_path(subscribeduser) %></td>
    <td><%= link_to 'Destroy', subscribeduser, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
  <% end %>
</tbody>
</table>

<br>

<%= link_to 'New Subscribeduser', new_subscribeduser_path %>

<% else %>

<%= render '/' %>

<% end %>

为什么这部分代码<%= render '/' %>触发undefined method 'empty?' for nil:NilClass undefined method 'empty?' for nil:NilClass错误?

由于您希望将用户返回首页,而不是

render '/'

你应该使用

redirect_to root_path

区别在于render准备将输出显示为当前请求的结果,而redirect_to命令用户的浏览器在指定的url处发出请求。

尽管可以通过任意操作呈现主页的内容,但这很少是可取的。 缺点之一是页面URL不会自动更新到浏览器地址栏中的站点根目录。

附带说明, render '/'不是正确的语法。 render 通常接受选项的哈希,而不是字符串。

为什么您有一个<%else%>子句而没有任何条件循环? 您想用<%render'/'%>调用什么? 您是否要调用索引页面? 如果是这样,可以通过说<%render“ index”%>来指定。

因此,您不需要if和else在视图侧进行阻塞,即可将页面重定向到根路径。 从控制器的任何操作中,您都需要以下代码。

如果是admin_signed_in? redirect_to root_path结束

还将if和else挡在视野之外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM