按钮标记栏中的嵌入式HTML按钮_to

时间:2012-08-19 08:22:51

标签: ruby-on-rails ruby-on-rails-3 twitter-bootstrap

  

可能重复:
  Is there a way with rails form helper to produce a button tag for submit

这可能是一个非常简单的问题,但我有这个HTML布局:

<button class="btn btn-large btn-inverse"><i class="icon-white icon-shopping-cart"></i> Add to bag</button> 

这是一个添加到购物车按钮,我正在沿着Agile Web Development一书创建购物车。问题是,在按钮标签之间嵌入了HTML,我该如何让它像那样渲染?我试过这个:

%= button_to raw('<i class="icon-white icon-shopping-cart"></i> Add to bag'), line_items_path(product_id: product) %>

但首先它打印的是“输入”而不是按钮,文本在html中都是歪斜的,而不是在开始和结束标记之间。

我知道我可以手动编写所有内容,但是希望弄清楚是否有一种快捷方式来使用rails标签来输出这个HTML,主要是因为使用twitter bootstrap我总是看到这种类型的HTML模式...

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

正如Mischa所评论,它类似于Is there a way with rails form helper to produce a button tag for submit

content_tag帮助器可用于在rails中写入按钮。但是,它不是一个捷径,因为写入比原始html需要更长的时间。

但是,如果您需要经常这样做,您可以编写自定义帮助方法,以您想要的方式执行此操作!

只需添加到您的app / helpers / application_helper.rb

即可
def my_button_to name, options = {}, html_options = {} # or some variation
  # eg. deal with options hash the way button_to deals with it here?
  content_tag :button, html_options = nil do
    raw name
  end
end

现在您可以在视图中使用它:

<%= my_button_to '<i class="icon-white icon-shopping-cart"></i> Add to bag', {}, :class => "btn btn-large btn-inverse" %>