2016-04-28 4 views
0

Здесь у меня есть 10 столбцов, то есть answer1, answer2, answer3, ..., answer10 в таблице MgAnswer. Я должен проверить, присутствует ли каждое значение столбца или нет. Только если он присутствует, я должен отобразить его на странице.Динамическое отображение значений столбцов

имена Im даяния столбцов динамически в пределах цикла для

<% (1..10).each do |i| %> 
    <% if MgAnswer."answer#{i}".present? %> 
     <%= MgAnswer."answer#{i}" %> 
    <% end %> 
<% end %> 

Im заканчивающихся с ошибкой синтаксиса.

+0

Что это за синтаксическая ошибка? – Pavan

+0

вы можете проверить его как 'nil?' – uzaif

+0

'синтаксическая ошибка, неожиданное keyword_ensure, ожидающее конца ввода' –

ответ

2

Казалось бы, как следующее:

<% (1..10).each do |i| %> 
    <%= MgAnswer.send("answer#{i}") %> 
<% end %> 

Поскольку рубин не может оценить линию, как MgAnswer."method". Также вы можете просто пропустить условие if, потому что оно будет оценено как пустая строка "".

+0

Не работает «Только если он присутствует, то ..» –

+0

@MikhailChuprynski, если он пуст, он просто показывает «». –

+0

Его рабочий :) @ МалъСкрылевъ –

3

Вы действительно можете динамически вызывать методы в ruby, но это не синтаксис. Вместо того, чтобы сделать

<% (1..10).each do |i| %> 
    <% if MgAnswer.public_send("answer#{i}").present? %> 
    <%= MgAnswer.public_send("answer#{i}") %> 
    <% end %> 
<% end %> 
+0

Этот тоже работает. Спасибо :) –

Смежные вопросы