私はRuby on Railsを使用していて、Rubyコードのブロックを私のhtml.erbの1つで実行する必要がありますファイルです。次のように実行しますか?
<% 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
別の、非常にクリーンな代替手段は Presenterpattern を使用することですが、あまり一般的ではありません(残念ながら)。
そうでない場合、Rubyコードの複数行が必要な場合、回避しようとしますが、これを回避しようとすると、次のスタイルが優先されます。
<%
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>
しかし、私はこの問題についてさまざまな意見を聞くことに常に非常に興味があります。