motolog

Everything I love in my life.

Rails3でflashにリンクを組み込む方法

flashでリンク出てきたほうが親切だなと思い、やってみました。
少しだけハマるとこありました。

# users_controller.rb

def update
  link = "<a href=\"#{url_for(:controller => 'users', :action => 'show')}\">#{@hoge.name}</a>"
  if @hoge.save
    flash[:success] = "保存されました。#{link}".html_safe
    redirect_to dashboard_path
  end
end

分かりやすくするため、link 部分を変数にしました。ポイントは以下。

  • 'link_to' ではなく 'url_for' で指定してあげる
  • '.html_safe' でHTMLがエスケイプしないようにしてあげる(Rails3.x の時)

この2箇所かなと。
'link_to' を controller から利用するには、helper module が必要なので、'url_for' を採用。それから、Rails3では自動でエスケイプ処理が行われる仕様なので、それを'.html_safe'で制御。

おわり!

※ 無理矢理感は否めませんが、まあ動くというレベルですね…

© 2018 Motoki Yoshida