2011-01-26 136 views
2
<% @labels.each do |label| %> 
    <input type="text" name="<%=label.name%>" value="<%[email protected](label.related_to) %>" class="big-font" style="width: <%=label.width%>px; top: <%=label.y_coor%>px; left: <%=label.x_coor%>px;" /> 
<% end %> 

大家好我是新來的rails,所以這應該是一個相當容易回答的問題。調用方法名稱在另一個變量中的變量的方法

問題在於:<%[email protected](label.related_to) %>

label.related_to包含字符串「make」。我試圖讓它做到這一點:@car.make

任何想法的傢伙?

感謝, 阿蘭

回答

4

使用send將消息發送到一個對象:

@car.send(label.related_to) 

如果沒有是該對象的有效方法label.related_to的任何機會,你可能會想準備趕上NoMethodError

+0

太謝謝你了! – criticerz 2011-01-26 02:21:12

1

您可以使用try方法。

<%= car.try(label.related_to) %> 

try會嘗試調用方法上car。但是,如果方法(即make)不存在,則會引發錯誤。

你可以利用respond_to?,以確保該方法存在:

<%= car.try(label.related_to) if car.respond_to?(label.related_to) %> 
相關問題