Dav*_*ill 44 ruby ruby-on-rails
我正在学习Ruby和Rails.
我有一个Ruby on Rails项目,它跟踪服务器正在运行的作业.现在,当我手动创建一个新工作时,它宣布:
flash[:notice] = "Created job job number #{update.id}."
Run Code Online (Sandbox Code Playgroud)
我想将其#{update.id}转变为工作清单上的工作链接.
转到作业的URL 是闪存通知中显示的jobs/list?job=12341234 update.id.
是否可以将链接放入flash[:notice]声明中?或者我是否需要重新处理此消息的显示方式才能将其转换为链接?
Kir*_*ill 42
.html_safe如果您使用的是Rails3,请不要忘记在通知的最后添加.所以它会说flash[:notice] = "Your message".html_safe
Dor*_*ian 37
该@template实例变量不再可用在Rails 3中.
相反,您可以在控制器中使用它:
flash[:notice] = "Successfully created #{view_context.link_to('product', @product)}.".html_safe
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
Emi*_*ily 34
我可能会遗漏一些明显的东西,但你应该能够做到
flash[:notice] = %Q[Created job number <a href="/jobs/list?job=#{update.id}">#{update.id}</a>]
Run Code Online (Sandbox Code Playgroud)
然后只需确保在视图中显示时不会转移闪存的内容.
mik*_*kej 16
正如nas所评论的那样,link_to除非你包含适当的辅助模块,否则你的控制器无法使用,但是url_for.因此,除了使用url_for而不是硬编码URL 之外,我会做很多Emily所说的话.
例如,如果作业被定义为您的路线中的资源:
link = "<a href=\"#{url_for(update)}\">#{update.id}</a>"
flash[:notice] = "Created job number #{link}"
Run Code Online (Sandbox Code Playgroud)
选定的答案对我不起作用.但这篇文章的答案奏效了.我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">×</span></button>
<div id="flash_<%= name %>"><%= sanitize(msg) %></div>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
flash[:success] = "Blah blah. #{view_context.link_to('Click this link', '/url/here')}"
Run Code Online (Sandbox Code Playgroud)
神奇的是sanitize方法.
我也不需要使用.html_safe.
在多利安的答案的基础上,这是一个带有链接的国际化快讯:
flash[:notice] = t('success', go: view_context.link_to(t('product'), @product)).html_safe
Run Code Online (Sandbox Code Playgroud)
您的翻译(例如,YAML文件)可能包含:
en:
success: "Successfully created a %{go}"
product: "product"
it:
success: "%{go} creato con successo"
product: "Prodotto"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19011 次 |
| 最近记录: |