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