Rails:语法错误,意外的keyword_ensure,期待$ end

时间:2013-02-26 05:17:08

标签: ruby-on-rails erb

我正在创建一个非常基本的rails应用程序(学习教程),并且无法理解为什么我收到此错误。我试过故障排除但无济于事。

我的代码:

<ul class = "nav pull-right">
  <% if user_signed_in? %>
    <li><%= link_to current_user.full_name, edit_user_registration_path %></li>
    <li><%= link_to "Log Out", destroy_user_session_path, method: :delete %></li>
  <% end %> 

  <% else %>

    <li><%= link_to "Log In", new_user_session_path %></li>
    <li><%= link_to "Sign Up", new_user_registration_path %></li>
  <%end%>

</ul>

一切都很好,直到我添加了Else语句,但不知道我的错误是什么 - 我确定这是一个非常小的语法修复,但是你的帮助会非常感激。

6 个答案:

答案 0 :(得分:11)

代码中有错误。
end开始之前,您的代码中会有额外的else 删除它可以解决您的问题......

答案 1 :(得分:8)

正如其他人所指出的,代码中的错误是<% end %>if块之间的额外else

在我看来,真正的解决方案是将以下内容添加到您的Gemfile中:

group :development do
  gem 'better_errors'
end

(当您看到由语法问题导致的此错误消息时,这通常是真正的解决方案。)

答案 2 :(得分:3)

删除<% end %>之前的<% else %>

代码应如下:

<ul class = "nav pull-right">
  <% if user_signed_in? %>
    <li><%= link_to current_user.full_name, edit_user_registration_path %></li>
    <li><%= link_to "Log Out", destroy_user_session_path, method: :delete %></li>

  <% else %>

    <li><%= link_to "Log In", new_user_session_path %></li>
    <li><%= link_to "Sign Up", new_user_registration_path %></li>
  <%end%>

</ul>

答案 3 :(得分:1)

在我的情况下,我在循环中忘记了do

<% @things.each |thing| %>

正确的格式是:

<% @things.each do |thing| %>

答案 4 :(得分:0)

<ul class = "nav pull-right">
  <% if user_signed_in? %>
    <li><%= link_to current_user.full_name, edit_user_registration_path %></li>
    <li><%= link_to "Log Out", destroy_user_session_path, method: :delete %></li>  
  <% else %>
    <li><%= link_to "Log In", new_user_session_path %></li>
    <li><%= link_to "Sign Up", new_user_registration_path %></li>
 <%end%>
</ul>

应该是这样的

答案 5 :(得分:0)

如果您使用HAML,可能是原因:

- model_class = Products
  .products-page

将解决什么? Identation。

- model_class = Products
.products-page