把链接放在一个flash

我正在学习Ruby和Rails。

我有一个Ruby on Rails项目,跟踪服务器正在运行的作业。 现在,当我手动创build一个新的工作,它宣布:

flash[:notice] = "Created job job number #{update.id}." 

我想将#{update.id}转换为作业列表中作业的链接。

转到作业的URL是jobs/list?job=1234 ,其中1234是在flash通知中显示的update.id

是否有可能把一个链接到一个flash[:notice]语句? 还是我需要重新工作如何显示这条消息,以将其转化为链接?

我可能会错过一些明显的东西,但你应该能够做到

 flash[:notice] = %Q[Created job number <a href="/jobs/list?job=#{update.id}">#{update.id}</a>] 

然后只要确保在显示在视图中时不会跳过闪光灯的内容。

如果您使用Rails3,请不要忘记在通知末尾添加.html_safe 。 所以它会说flash[:notice] = "Your message".html_safe

Rails 3中不再提供@template实例variables

相反,你可以在你的控制器中使用它:

 flash[:notice] = "Successfully created #{view_context.link_to('product', @product)}.".html_safe 

希望这可以帮助 :)

正如nas评论的, link_to不可用从您的控制器,除非您包含适当的辅助模块,但url_for是。 所以我会做非常多的艾米莉说,除了使用url_for而不是硬编码的URL。

例如,如果一项工作被定义为您的路线中的资源:

 link = "<a href=\"#{url_for(update)}\">#{update.id}</a>" flash[:notice] = "Created job number #{link}" 

你可以在你的控制器中使用别名到link_to函数或者RailsCast配方:

 "Created job job number #{@template.link_to update.id, :controller => 'jobs', :action => 'list', :job => update.id}." 

http://railscasts.com/episodes/132-helpers-outside-views

基于Dorian的回答,这是一个国际化的闪光链接:

 flash[:notice] = t('success', go: view_context.link_to(t('product'), @product)).html_safe 

你的翻译(如YAML文件)可能包含以下内容:

 en: success: "Successfully created a %{go}" product: "product" it: success: "%{go} creato con successo" product: "Prodotto" 

选定的答案不适合我。 但是这个post的答案奏效了。 顺便说一句,我使用的是Rails 4.2.4 。 在我连接的答案的指导下,我是这么做的:

视图

 <% flash.each do |name, msg| %> <div class="alert alert-<%= name %>"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> <div id="flash_<%= name %>"><%= sanitize(msg) %></div> </div> <% end %> 

调节器

 flash[:success] = "Blah blah. #{view_context.link_to('Click this link', '/url/here')}" 

魔法就是sanitize方法。

我也不需要使用.html_safe

你总是可以使用Rails link_to helper:

 flash[:notice] = "Created job job number #{link_to update.id, :controller => 'jobs', :action => 'list', :job => update.id}."