将 haml-partial 传递给控制器变量
Passing haml-partial to a controller variable
我有一个向站点上的用户发送消息的功能。
函数参数:user_id、from_user_id、主题、内容。
我需要将 haml 模板传递给支持 link_to 助手的内容变量。
我可以做类似 content: partial 'my_partial'
的事情吗?
这可以做到吗?
因为在controller里写长行我实在不爽:
Msg.create(user_id: 2420,
from_user_id: 2421,
subject: 'Finish now!',
content: "<p style='text-align: center;'>User A can help!.<br><br><br><br><a class='match-btn-green-radius' href='#'>Finish</a></p>")
看起来像这样:
Msg.create(user_id: 2420,
from_user_id: 2421,
subject: 'Finish now!',
content: render_to_string(partial: 'foo/bar', locals: { foo: 'bar' }))
这将在 app/foo/_bar.html.haml
渲染部分,局部变量 foo
设置为值 "bar"
。
另一种方法是直接使用haml
。 (注意缩进)
engine = Haml::Engine.new("
%p Haml code!
h1 Title
")
Msg.create(...., content: engine.render)
显然这只是为了非常简单的 html,我非常清楚在控制器中混合 html 违反了各种规则。
我有一个向站点上的用户发送消息的功能。
函数参数:user_id、from_user_id、主题、内容。 我需要将 haml 模板传递给支持 link_to 助手的内容变量。
我可以做类似 content: partial 'my_partial'
的事情吗?
这可以做到吗?
因为在controller里写长行我实在不爽:
Msg.create(user_id: 2420,
from_user_id: 2421,
subject: 'Finish now!',
content: "<p style='text-align: center;'>User A can help!.<br><br><br><br><a class='match-btn-green-radius' href='#'>Finish</a></p>")
看起来像这样:
Msg.create(user_id: 2420,
from_user_id: 2421,
subject: 'Finish now!',
content: render_to_string(partial: 'foo/bar', locals: { foo: 'bar' }))
这将在 app/foo/_bar.html.haml
渲染部分,局部变量 foo
设置为值 "bar"
。
另一种方法是直接使用haml
。 (注意缩进)
engine = Haml::Engine.new("
%p Haml code!
h1 Title
")
Msg.create(...., content: engine.render)
显然这只是为了非常简单的 html,我非常清楚在控制器中混合 html 违反了各种规则。