link_to
Ruby 1.9.3 で Rails 2.3.14
のブロックを使用しようとしていますが、ActionView::TemplateError syntax error, unexpected keyword_do_block
HTML
<% @contents.each do |item| %>
<%= link_to "#" do %> # this is the line referenced in the error message
<%= content_tag(:h3, item.title) %>
<div class="details">
# divs with text
</div>
<% end %>
<% end %>
詳細なエラー メッセージ
エラー メッセージに含まれるコード行は、デバッグ用に簡略化した上記のコードと完全には一致しませんが、参照されている行は同じであることがわかります。
ActionView::TemplateError (/my/file/_partial.html.erb:78: syntax error, unexpected keyword_do_block
...;@output_buffer.safe_concat((do).to_s);@output_buffer.safe_c...
... ^
/my/file/_partial.html.erb:97: syntax error, unexpected keyword_else, expecting keyword_end
'); else
^
/my/file/_partial.html.erb:123: syntax error, unexpected keyword_ensure, expecting $end) on line #78 of app/views/content/_list.html.erb:
75: <%= hoverhide_image(item) %>
76: </div>
77: <div class="hovershow">
78: <%= link_to("#") do %>
79: <%= content_tag(:h3, item.title) %>
80: <div class="details">
81: <div>
link_to
ブロックをタグに置き換えると、a
完全にレンダリングされます。
=
3行目から削除すると(<% link_to "#" do %>
代わりに作成します)、エラーはスローされませんが、もちろんテキストはレンダリングされません。
何が起こっているのか分かりますか?
(エラーメッセージの詳細を追加するために編集されました)