Как я могу исправить ошибку при попытке получить логин / аут и значки аккаунта в Rails? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь преобразовать

<!-- application.html.erb -->
<ul class="nav navbar-nav navbar-right">
  <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
  <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
</ul>

во встроенный файл Ruby HTML.

Код, который у меня пока есть:

# app/devise/user/_login_items.html.erb
<% if user_signed_in? %>

    <%= link_to destroy_user_session_path, :method => :delete, :class => 'nav-link' do %>
        <%= content_tag(:span => 'test', :class => 'glyphicon glyphicon-log-out') %>
        Sign out
    <% end %>


<% else %>

    <%= link_to 'Log in', new_user_session_path, :class => 'nav-link' do %>
        <%= content_tag(:span => 'test', :class => 'glyphicon glyphicon-log-in') %>
        Log in
    <% end %>

<% end %>

У меня естьпартиалы, установленные в application.html.erb:

  <ul class="nav navbar-nav navbar-right">
    <%= render 'devise/menu/registration_items' %>
    <%= render 'devise/menu/login_items' %>
  </ul>

Я получаю ошибку:

undefined method `to_sym' for {:span=>"test", :class=>"glyphicon glyphicon-log-out"}:Hash
Did you mean?  to_s
               to_yaml
               to_set

и выделяет

<%= content_tag(:span => 'test', :class => 'glyphicon glyphicon-log-out') %>

Я не знаюНе знаю, как это исправить, я пытался использовать класс span в качестве HTML-кода, но это тоже не сработало.Исходный код работает в файле application.html.erb.

Я предполагаю, что он не знает, как преобразовать в символ, поскольку он является частью Bootstrap.

application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Workspace</title>
  <%= stylesheet_link_tag    'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css' %>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>
  <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
    <!--<a class="navbar-brand" href="#">Navbar</a>-->
    <%= link_to 'A2Z.ie', home_path, :class => 'navbar-brand' %>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarsExampleDefault">
      <ul class="navbar-nav mr-auto">
        <!-- <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Account</a>
          <div class="dropdown-menu" aria-labelledby="dropdown01">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div> 
        </li> --> <!-- Dropdown links not working with partials. -->


        <li class="nav-item">
          <!-- <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> -->
          <%= link_to 'Home', home_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Locations', locations_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Departments', departments_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Employees', employees_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Products', products_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Customers', customers_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Payments', payments_path, :class => 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Orders', orders_path, :class => 'nav-link' %>
        </li>

      </ul>
      <ul class="nav navbar-nav navbar-right">
        <%= render 'devise/menu/registration_items' %>
        <%= render 'devise/menu/login_items' %>
      </ul>
      <!-- <form class="form-inline my-2 my-lg-0">
        <input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
      </form> -->
    </div>
  </nav>

  <p class="notice"><%= notice %></p>
  <p class="alert"><%= alert %></p> 

  <div class="container">
    <%= yield %>
  </div>

</body>
</html>

Ответы [ 3 ]

0 голосов
/ 26 марта 2019

UPDATE

Вы используете Bootstrap 4.3.x, который прекратил использование Glyphicon . Вы должны использовать FontAwesome, как они предлагают здесь. Вот почему это не работает!

Вы должны использовать это:

content_tag(:span, "test", class: ["glyphicon", "glyphicon-log-out"])

ОБНОВЛЕНИЕ 2: RAILS 5 & Font Awesome

Пожалуйста, попробуйте это:

Добавить:

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">

в ваш файл application.html.erb после последнего тега stylesheet_link_tag.

И измените следующий файл следующим образом:

# app/devise/user/_login_items.html.erb
<% if user_signed_in? %>

  <%= link_to destroy_user_session_path, :method => :delete, :class => 'nav-link' do %>
    <i class="fas fa-sign-in-alt"></i> Sign out
  <% end %>

<% else %>

  <%= link_to 'Log in', new_user_session_path, :class => 'nav-link' do %>
    <i class="fas fa-sign-out-alt"></i> Log in
  <% end %>

<% end %>

Надеюсь, это поможет!

PS: Никогда не сдавайся!

0 голосов
/ 26 марта 2019

Папка созданных изображений

Добавлены изображения "glyphicon glyphicon-user" и "glyphicon glyphicon-log-in" из примеров на getbootstrap.com, ссылка на используемое изображение в link_to, например,

<%= link_to image_tag("Search.png", :border=>0), destroy_user_session_path, :method => :delete, :class => 'nav-link' %>

0 голосов
/ 26 марта 2019

https://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag

Вы должны структурировать это так:

<%= content_tag(:span, 'test', :class => 'glyphicon glyphicon-log-out') %>

Или с новым синтаксисом ruby:

<%= content_tag(:span, 'test', class: 'glyphicon glyphicon-log-out') %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...