2

レールにはかなり新しい。従業員の休暇日をカレンダーに表示する仮想的な小さなアプリケーションを作成します。これらの従業員をチェックリスト (出力をカスタマイズするため) にリストしようとしていますが、配列のように見えるものを取得しています。ループが終了すると、私に吐き出されます。理由がわかりません - 直接出力する必要はありません。ループが終わると吐き出しているように見えます。何か助けはありますか?

<%= @employees.each do |empl| %>
    <label><%= check_box 'employee','id',{:checked => 'checked' },empl.id %>
    <%= link_to empl.name, edit_employee_path(empl), :target => '_blank' %></label>
<% end unless @employees.empty? %>
<%= link_to 'Add Employee', new_employee_path %>

出力は次のとおりです。

<label><input name="employee[id]" type="hidden" value="0" /><input checked="checked" id="employee_id" name="employee[id]" type="checkbox" value="1" />
    <a href="/employees/1/edit" target="_blank">Test 1</a></label>
<label><input name="employee[id]" type="hidden" value="0" /><input checked="checked" id="employee_id" name="employee[id]" type="checkbox" value="2" />
    <a href="/employees/2/edit" target="_blank">Test</a></label>
[#&lt;Employee id: 1, name: &quot;Test 1&quot;, created_at: &quot;2012-07-06 19:58:03&quot;, updated_at: &quot;2012-07-06 19:59:55&quot;&gt;, #&lt;Employee id: 2, name: &quot;Test&quot;, created_at: &quot;2012-07-06 21:10:10&quot;, updated_at: &quot;2012-07-06 21:10:10&quot;&gt;]
<a href="/employees/new">Add Employee</a>

意味的にはunless、ループの後は場違いに見えますが、ループの前に置きたい場合は、end後で余分に追加することを理解しています。それは関係ありますか?何が起こっているのか分かりますか?

4

2 に答える 2

3

に変更<%= @employees.each do |empl| %>する<%- @employees.each do |empl| %>と、リストの出力が停止します。つまり、 を に変更し=ます-=ERB を使用して、そのコマンドの結果を出力するように指示します。を呼び出すとeach、リストが返されるため、リストが出力されます。

あなたについてはunless、実際には必要ないと思います。リストが の場合、empty?実際には繰り返しを実行せずにそれぞれが返されるため、ループ内のコードが呼び出されることはありません。

于 2012-07-06T21:19:09.807 に答える