将 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 违反了各种规则。