我正在获取错误未定义的方法`空?'为零:NilClass

时间:2016-07-28 22:23:20

标签: ruby-on-rails ruby

我正在制作一个超级简单的简报应用程序,我对此错误感到困惑。为什么有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错误?

3 个答案:

答案 0 :(得分:1)

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

set @cnt = 0;
update test t set t.number=@cnt:=@cnt+1;

你应该使用

render '/'

差异为redirect_to root_path 准备输出显示为当前请求的结果,render命令用户的浏览器显示请求指定的网址。

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

作为旁注,redirect_to不是正确的语法。 render '/' generally accepts选项的哈希,而不是字符串。

答案 1 :(得分:0)

为什么你有&lt;%else%&gt;没有任何条件循环的子句?你想用什么打电话&lt;%render&#39; /&#39; %GT ;?您是否正在尝试调用索引页面?如果是这样,你可以通过说&lt;%render&#34; index&#34;来指定。 %GT; 。

答案 2 :(得分:0)

所以你不需要if和else在视图端阻止页面重定向到根路径。 从您的控制器开始,您需要遵循代码所需的任何操作。

如果admin_signed_in?      redirect_to root_path 端

还会从视图中删除if和else块。