【问题标题】:Rails: syntax error, unexpected keyword_ensure, expecting $endRails:语法错误,意外的keyword_ensure,期待$end
【发布时间】:2013-02-26 05:17:07
【问题描述】:

我正在创建一个非常基本的 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 语句,但不知道我的错误是什么 - 我确信这是一个非常小的语法修复,但非常感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails erb


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      正如其他人指出的那样,您的代码中的错误是您的 ifelse 块之间的额外 &lt;% end %&gt;

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

      group :development do
        gem 'better_errors'
      end
      

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

      【讨论】:

      • 这很有趣,我没有听说过这个宝石 - 我会试试看,谢谢!
      【解决方案3】:

      删除&lt;% else %&gt; 之前的&lt;% end %&gt;

      代码应该如下:

      <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>
      

      【讨论】:

        【解决方案4】:

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

        - model_class = Products
          .products-page
        

        什么会解决?识别。

        - model_class = Products
        .products-page
        

        【讨论】:

          【解决方案5】:

          就我而言,我在循环中忘记了do

          <% @things.each |thing| %>
          

          正确的格式是:

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

          【讨论】:

            【解决方案6】:
            <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>
            

            应该是这样的

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-07-15
              • 2012-02-10
              • 2015-04-02
              • 2017-09-12
              • 2012-02-23
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多