Вызов метода для переменной, где имя метода находится в другой переменной - PullRequest
2 голосов
/ 26 января 2011
<% @labels.each do |label| %>
    <input type="text" name="<%=label.name%>" value="<%=@car.(label.related_to) %>" class="big-font" style="width: <%=label.width%>px; top: <%=label.y_coor%>px; left: <%=label.x_coor%>px;" /> 
<% end %>

Привет, ребята, я новичок в rails, поэтому на этот вопрос должно быть довольно легко ответить.

Проблема здесь: <%=@car.(label.related_to) %>.

label.related_toсодержит строку «make».Я пытаюсь заставить его сделать это в значительной степени: @car.make

Есть идеи, ребята?

Спасибо, Ален

Ответы [ 2 ]

4 голосов
/ 26 января 2011

Используйте send для отправки сообщения объекту:

@car.send(label.related_to)

Если есть вероятность, что label.related_to не будет допустимым методом для объекта, вы, вероятно, захотите быть готовым поймать NoMethodError

1 голос
/ 26 января 2011

Вы можете использовать try метод.

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

try попытается вызвать метод на car. Однако, если метод (т. Е. make) не существует, он выдаст ошибку.

Вы можете использовать respond_to?, чтобы убедиться, что метод существует:

<%= car.try(label.related_to) if car.respond_to?(label.related_to) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...