Ruby on rails 带有rails 5.1的helper中的html

Ruby on rails 带有rails 5.1的helper中的html,ruby-on-rails,helper,Ruby On Rails,Helper,我试图用rails 5.1构建一个助手 我需要: <div class="card-sleep-body-price"> <span>à partir de</span> <p>45.53€</ </div> 第三方 45.53€这里有一种方法。修改代码,使用引号和字符串插值,让Ruby知道什么是文字,什么是代码 def sleep_price(poi) "<span>à parti

我试图用rails 5.1构建一个助手

我需要:

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

第三方

45.53€这里有一种方法。修改代码,使用引号和字符串插值,让Ruby知道什么是文字,什么是代码

def sleep_price(poi)
  "<span>à partir de</span><p>#{poi.poitable.tariffs.first.price}€</p>"
end

您好,Ben,您可以使用Rails
content\u tag
helpers来构建html元素

视图助手 def生成_价格(标签:,价格:,类别:“元素类别”)

内容标签:div,class:class do

concat(内容\标签(:范围,标签))

concat(内容标签(:p,价格))

结束

结束

用法:

一方45.53欧元

嵌套内容标签:

内容标签:


希望这有帮助

我相信这是一种更优雅的方式:

def睡眠价格(poi)
如果poi.TARGES.blank,则返回?
tag.div类:“卡睡眠体价格”do
concat(tag.span“a partir de”)
concat(tag.p“#{poi.poitable.tarties.first.price}€”)
终止
终止

把自己放在-1。。。但它不能回答我的问题。。。谢谢:D对不起,如果我是新手:(错误是什么?我的意思是,一定有语法错误,你应该在寻求帮助时发布错误。我想你可以对每个节点使用
content\u tag
方法,如果有不好的形式,你就完成了。我该怎么做?有什么更好的方法吗?如果
price
被传递给帮助者就好了。链
poi.poitable.tariffs.首先,理想情况下,让您了解价格的
是在模型中,或者可能是在控制器中。例如,如果
poi
总是只有一个价格,您可能希望在
poi
模型中实现一个
poi.price
方法来封装该逻辑。非常感谢您的帮助。我不确定我是否理解。可以吗你可以用一个例子来解释吗?当然可以。我编辑我的答案是为了有一个例子。如果这对你有效,请检查我的答案是否正确。非常感谢John的解释。你在哪里测试price是否不是空的?在视图中?仍然支持content_标记和标记方法的旧语法,但将来可能会被弃用和删除Rails的版本。感谢ben提供的信息,是的,它可能很快就会贬值,但这一点还不确定,但是
tag
助手解决了在Rails中构建
html
元素的大多数问题。
def sleep_price(poi)
  "<span>à partir de</span><p>#{poi.poitable.tariffs.first.price}€</p>"
end
class Poi < ActiveRecord::Base
  belongs_to :poitable

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

end
<%= sleep_price(match.sleep) %>
def sleep_price(price)
  "<span>à partir de</span><p>#{price}€</p>"
end