HTML в хелпер с рельсами 5.1 - PullRequest
       5

HTML в хелпер с рельсами 5.1

0 голосов
/ 13 сентября 2018

Я пытался собрать помощника с рельсами 5.1.

Мне нужно иметь:

 <div class="card-sleep-body-price">
    <span>à partir de</span>
       <p>45.53€</
  </div>

Я пытался построить:

  def sleep_price(poi)
      if !poi.tariffs.blank?
        tag.div class: 'card-sleep-body-price' do
          <span>à partir de</span>
          <p>poi.poitable.tariffs.first.price '€'</p>
        end
      end
  end

Как я могуисправить это?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Привет, Бен, вы можете использовать Rails content_tag помощники для создания HTML-элементов.

просмотр помощника

def generate_price (label :, price :, class: "element-class")

content_tag: div, class: class do

concat (content_tag (: span, label))

concat (content_tag (: p, цена))

конец

конец

использование:

<%= generate_price(label: à partir de, price: 45.53€)%>

<div class="element-class"><span>à partir de</span><p>45.53€</p></div>

вложенный тег_ контента: https://robots.thoughtbot.com/nesting-content-tag-in-rails-3

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

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

0 голосов
/ 13 сентября 2018

Вот один из способов.Модифицировал ваш код для использования кавычек и интерполяции строк, чтобы Ruby знал, что такое литерал и что такое код.или представление, рассмотрите возможность использования этой логики в модели:

class Poi < ActiveRecord::Base
  belongs_to :poitable

  def price
    self.poitable.tariffs.first.price
  end

end

Из представления вы можете вызвать этот метод следующим образом:

<%= sleep_price(match.sleep) %>

В качестве альтернативы, вы можете вызвать match.sleep изконтроллер, возможно, установив переменную экземпляра, доступную из представления.

Помощник может выглядеть так:

def sleep_price(price)
  "<span>à partir de</span><p>#{price}€</p>"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...