【问题标题】:Passing haml-partial to a controller variable将haml-partial传递给控制器​​变量
【发布时间】:2019-08-12 11:08:56
【问题描述】:

我有一个向网站上的用户发送消息的功能。

函数参数:user_id、from_user_id、主题、内容。 我需要将一个haml模板传递给支持link_to帮助器的内容变量。

我可以做类似content: partial 'my_partial' 的事情吗?

这个可以吗?

因为我真的不习惯在控制器中写长行:

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>")

看起来像这样:

【问题讨论】:

    标签: ruby-on-rails ruby haml


    【解决方案1】:
    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"。

    【讨论】:

      【解决方案2】:

      另一种方法是直接使用haml。 (注意缩进)

      engine = Haml::Engine.new("
      %p Haml code!
      h1 Title
      ")
      
      Msg.create(...., content: engine.render)
      

      显然这只是针对非常简单的 html,我非常清楚在控制器中混合 html 会违反各种规则。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        相关资源
        最近更新 更多