0

红宝石 1.9.3-p194

导轨 3.0.3

我今天遇到了 libcrypt 错误,经过数小时的故障排除后,我卸载了 rvm、ruby 和 gems。我重新安装了所有东西,但现在我的应用程序抛出错误。我没有对我的代码进行任何更改,但是在重新安装之前它运行良好:

ActionView::Template::Error (/home/username/apps/vits/app/views/layouts/application.html.erb:19: syntax error, unexpected ',', expecting ')'
if (current_user.admin == true, "Admin Menu", adminmenu_path...
/home/username/apps/vits/app/views/layouts/application.html.erb:19: syntax error, unexpected ',', expecting ')'
...er.admin == true, "Admin Menu", adminmenu_path) );@output_bu....
/home/username/apps/vits/app/views/layouts/application.html.erb:22: syntax error, unexpected keyword_do_block, expecting keyword_end
');@output_buffer.append_if_string=  flash.each do |name, msg|
/home/username/apps/vits/app/views/layouts/application.html.erb:22: syntax error, unexpected '|', expecting '='
');@output_buffer.append_if_string=  flash.each do |name, msg|
/home/username/apps/vits/app/views/layouts/application.html.erb:44: syntax error, unexpected keyword_ensure, expecting $end):
16:     <div id="header">
17:             <div class="wrap clear">                        
18:                 <% if current_user %>  
19:                     <%= link_to "Logout", logout_path %>  |  <%= link_to "Main Menu", usermenu_path %>  |  <%= link_to_if (current_user.admin == true, "Admin Menu", adminmenu_path) %>
20:                 <% end %>
21:             </div>
22: <%- flash.each do |name, msg| -%>
app/controllers/user_sessions_controller.rb:29:in `new'

有任何想法吗?这对我来说是一个糟糕的 RoR 日。
提前致谢。-凯蒂

编辑添加整个 application.html.erb:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title><%= h(yield(:title) || "Vendor Invoice Tracking System (VITS)") %></title>
    <link rel="stylesheet" href="stylesheets/scaffold.css" type="text/css" media="all" charset="utf-8" />
    <%= stylesheet_link_tag 'scaffold' %>
    <%= javascript_include_tag :defaults %>
    <%= javascript_include_tag "tablesort.js" %>
  </head>

  <body>
    <div id="siteholder">

    <div id="header">
            <div class="wrap clear">                        
                <% if current_user %>  
                    <%= link_to "Logout", logout_path %>  |  <%= link_to "Main Menu", usermenu_path %>  |  <%= link_to_if ((current_user.admin == true, "Admin Menu", adminmenu_path)) %>
                <% end %>
            </div>
<%- flash.each do |name, msg| -%>
<%= content_tag :div, msg, :id => "flash_#{name}" %></p>
<div class="clear"></div>
<%- end -%> 

        <% if current_user %>       
            <div id="content1">             
                <%= yield %>
            </div>

        <% else %>

            <div id="content">
                <div id="content1">
                </div>
                <%= yield %>
            </div>
        <% end %>

    </div>
  </body>
</html>'
4

1 回答 1

0

我认为问题在于这一行:

<%= link_to_if (current_user.admin == true, "Admin Menu", adminmenu_path) %>

您不需要== true,只需:

<%= link_to_if (current_user.admin, "Admin Menu", adminmenu_path) %>

会没事的。如果由于某种原因确实需要检查相等性,则需要额外的一对括号,例如:

<%= link_to_if ((current_user.role == "admin"), "Admin Menu", adminmenu_path) %>
于 2012-10-23T20:23:27.773 回答