Я использую Ruby on Rails и потребность выполнить блок кода Ruby в одном из моих html.erb файлов. Сделайте я делаю это как это:
<% def name %>
<% name = username %>
<%= name %>
или как это:
<% def name
name = username %>
<%= name %>
Спасибо за чтение.
Определение метода в файле ERB необычно, поэтому я не рекомендую это делать.
Если вы хотите вызвать такой блок, как #each
, вы можете сделать что-то вроде следующего:
<% names.each do |name| %>
<%= name %>
<% end %>
Не забудьте <% end%>
.
Если вам нужны дополнительные функции в вашем представлении, вы обычно объявляете их внутри помощника.
Для каждого контроллера, если есть помощник, он загружается автоматически. Например, если у вас есть PeopleController, в папке app / helpers
должен быть people_helper.rb
, и он должен выглядеть так
module PeopleHelper
def name
#do something
username
end
end
Еще одна, очень чистая альтернатива , заключается в использовании шаблона Presenter , но я думаю, что он менее распространен (к сожалению).
В противном случае, если вам нужно несколько строк кода ruby внутри представления erb, чего я стараюсь избегать, я предпочитаю следующий стиль:
<%
counter_1 = 0
counter_2 = 1
do_some_more_prep_here
%>
<% @records.each do |rec|%>
<%# do something with the prepped date in each row %>
<% end %>
Также для меня отступы кода более важны, чем отступы html, поэтому я предпочитаю что-то вроде
<table>
<% @rows.each do |row| %>
<tr>
<td><%= row.item1 %></td>
<% if row.some_test %>
<td><%= row.item2 %></td>
<% end %>
</tr>
<% end %>
</table>
Но мне всегда очень интересно услышать разные мнения по этому поводу.