我想做这样的事情,我不知道是否可能。此外,我知道这不是一个好习惯,但我处于截止日期。
在我的 _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
问题是html代码已呈现,我不知道如何在按钮变量中放置这些代码。 谢谢你的建议。
答案 0 :(得分:5)
执行所需操作的直接方法是使用capture_haml
helper将块捕获到字符串中以便以后重用:
- 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
你似乎在块中有很多重复,更好的方法可能是:
.my-buttons
%a.property-save{ href: "#" }
%i.icon-2x{:class => "icon-#{params[:action]}"}
= t(".property_#{params[:action]}")
您必须根据实际数据进行调整,但请注意class
属性的值将通过合并icon-2x
和散列结果来形成,因此您可以避免某些重复。
答案 1 :(得分:0)
在when语句中为buttons
分配值。并避免在Views中执行这些逻辑。
- case params[:action]
- when 'edit'
%a.property-save{ href: "#" }
%i.icon-save.icon-2x
- buttons = t('.property_save')
- else
%a.property-save{ href: "#" }
%i.icon-open.icon-2x
- buttons = t('.property_open')
.my-butons
= buttons