RubyとHAMLが初めてで、メインのHAMLファイル内で以下の部分をレンダリングしようとしました。部分はif条件のみで構成されます。条件が満たされている場合、部分条件のHAMLコードの出力をメインテンプレートに戻し、条件が満たされていない場合は何も表示しません。次のコードは配列 "attachments.each_file"が空の場合(何も表示しません)、空でない場合はif条件のコードに進むときにエラーをスローします。ここでは、関連するコードスニペットは、次のとおりです。条件付きブロックのみを含むHAMLでpartialをレンダリングする方法
エラーメッセージ:
LocalJumpError in Questions#show
Showing /questions/_attachments.html.haml where line #1 raised:
no block given (yield)
メインHAMLテンプレートコード:
= render "slashbias/questions/attachments", :attachments => @question.attachments, :editing => false
部分HAMLコード:
- if !attachments.each_file.empty?
%dl#attachments_list
%dt.header Attached files:
%dd
-attachments.each_file do |key, file|
= link_to file.name, question_attachment_path(question.group, question, file, key)
-if editing
= link_to t("scaffold.destroy"), remove_attachment_question_path(question, :attach_id => key), :class => "remove_attachment_link"
私はあなたにスポットがあると思います。 each_fileにはブロックが必要です – jaydel
そうです。私は何を考えていたのですか?「each_file」は何かのループのように聞こえる、私はよく知るべきです! :) – csuwldcat