【问题标题】:Ruby ternary operator in erb with html tags带有html标签的erb中的Ruby三元运算符
【发布时间】:2014-01-28 13:51:52
【问题描述】:

我正在尝试检查一个条件,然后包含“停止服务器”和“启动服务器”锚标记。我收到一个错误。

请告知要更改的内容。谢谢。

<%= condition ? "Running" <a href='/stop'> Stop Server </a> :"Stopped" <a href='/start'> Start Server</a> %> </td>

【问题讨论】:

    标签: ruby-on-rails ruby sinatra ternary-operator


    【解决方案1】:

    您正在混合代码和 html。这样做会更清楚:

    <% if condition %>
        "Running" <a href='/stop'> Stop Server </a>
    <% else %>
        "Stopped" <a href='/start'> Start Server</a>
    <% end %>
    

    【讨论】:

    • 这是一个很好的答案。但此外,我要补充一点,原始问题的很大一部分是您输出的标签(从 Ruby 的角度来看,是 [或应该是] 字符串)根本没有被引用。您可以解决这个问题,但是该行很快就会变得复杂且难以阅读和维护。这就是我的马特的答案是要走的路。
    【解决方案2】:

    看看link_to_if

     <%= 
       link_to_if condition, 'Run server', run_server_path do
         link_to 'Stop server', stop_server_path
       end 
     %>
    

    【讨论】:

      【解决方案3】:

      你应该这样做。

      <%= condition ? "Running <a href='/stop'> Stop Server </a>" :"Stopped <a href='/start'> Start Server</a> %> </td>"
      

      如果锚标记本身不是一个有效的 ruby​​ 语句并且 erb 是关于动态视图的。一旦你将它作为你所缺少的字符串,你的 ruby​​ 语句将变得有效。

      【讨论】:

        猜你喜欢
        • 2011-07-12
        • 1970-01-01
        • 2011-07-12
        • 2023-02-03
        • 2020-05-02
        • 2020-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多