edu*_*ris 4 haml ruby-on-rails
我想做这样的事情,我不知道是否有可能.我也知道这不是一个好习惯,但我处于截止日期.
在我的_buttons.html.haml中
- buttons = case params[:action]
- when 'edit'
%a.property-save{ href: "#" }
%i.icon-save.icon-2x
= t('.property_save')
...
- when 'show'
...
- else
%a.property-save{ href: "#" }
%i.icon-open.icon-2x
= t('.property_open')
.my-butons
= buttons
Run Code Online (Sandbox Code Playgroud)
问题是html代码被渲染,我不知道我如何在buttons变量中放置这些代码.谢谢你的建议.
执行所需操作的直接方法是使用capture_haml帮助程序将块捕获到字符串中以便以后重用:
- buttons = case params[:action]
- when 'edit'
- capture_haml do
%a.property-save{ href: "#" }
%i.icon-save.icon-2x
= t('.property_save')
...
- when 'show'
- capture_haml do
...
- else
- capture_haml do
%a.property-save{ href: "#" }
%i.icon-open.icon-2x
= t('.property_open')
.my-butons
= buttons
Run Code Online (Sandbox Code Playgroud)
你似乎在块中有很多重复,更好的方法可能是这样的:
.my-buttons
%a.property-save{ href: "#" }
%i.icon-2x{:class => "icon-#{params[:action]}"}
= t(".property_#{params[:action]}")
Run Code Online (Sandbox Code Playgroud)
您必须根据实际数据进行调整,但请注意,class通过合并icon-2x哈希值和结果,可以形成属性的值,这样可以避免重复.