Ruby插值到变量

3

这对我来说是一个很难问的问题,所以我先分享代码:

        <div class="col-xs-12">
          We operate on a pay what you want model. Keep in mind that 
          <% if action_name == "outdoors" %>
            <%= outdoors_donation.html_safe %>
          <% elsif action_name == "snowsports" %>
            <%= snowsports_donation.html_safe %>
          <% end %>
          Below, you'll find information on how we calculated your order's suggested donation of $<span id="modal-sentence"></span>.
        </div>

与其使用笨重的if语句,我更希望能够直接将action_name注入到被调用的变量中……就像这样:

<%= "#{action_name}_donation".html_safe %>

不确定实际上会是什么,谢谢!

你的变量(outdoors_donation和snowsports_donation)是实例变量吗? - QMFNP
2
你可以将值保存在哈希表中,然后使用变量作为键,例如donations[action_name] - Jon Egeland
是的,哈希表啊...唉,狭隘的思维会害死我的,谢谢! - james
1个回答

2

在Ruby中,您可以使用send来发送您提供名称的方法。这使您能够进行插值:

<%= self.send("#{action_name}_donation").html_safe %>

在这种情况下,self将是视图实例,与调用outdoors_donation.html_safesnowsports_donation.html_safe等相同。


1
谢谢!不过我会使用哈希表,因为对我来说更加清晰,但这个选项也很好! - james
是的,我的回答解决了这个问题,但我认为哈希方法可能是实际问题的更好解决方案。 - Shadwell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接