<%= render 'layout/accordion', locals: {...} %>
っていう記述が結構たくさんあって locals で渡す引数の1つ以外共通なので
ショートハンドメソッドを定義したくて
<% def accordion(**locals, &block) # 固定の引数付与 locals[:opened] = false locals[:class] = 'text-center' render layout: 'layouts/accordion', locals: locals, &block end %> <%= accordion id: 'fav_setting', title: ( t 'user.favorite' ) do %> ... <% end %>
みたいにかいてみたんですが定義の中の syntax error がなかなかとれません
ブロック引数やハッシュ引数を受け取ってその中を展開したり yield したりする書き方はいくらでもでてくるのですが
他のメソッドにわたすにはどうかけばいいのでしょうか
追記
いろいろ削っていくうちにメソッド定義ではなく呼び出し側の I18n.t の書き方で syntax error になるみたいです
accordion id: 'fav_setting', title: ( t 'user.favorite' ) do end
だと syntax error, unexpected keyword_do, expecting keyword_end
というエラーになり
favorite = t 'user.favorite' accordion id: 'fav_setting', title: favorite do end
だと大丈夫なようです
解決方法はわかったのですが () で囲んだだけの↑の書き方だとなぜエラーになるのか理解できません
シンタックスエラーはどのような内容ですか?
app/helpers/ にヘルパーメソッドとして定義した場合に、何か変化は見られますか?
ヘルパーにかいてみましたが変化ありませんでした
ビュー内のメソッドはヘルパー内にかくものなのですね
回答1件
あなたの回答
tips
プレビュー