有没有办法在rails中的表单错误消息中放置链接?
例如在我的模型中我有:
class Shoe < ApplicationRecord
validates :name, uniqueness: true
end
因此,在验证时,名称会显示默认消息“已将其命名为” 但是可以将已经取名的鞋子链接到鞋子上吗? 像这样:
此名称已被拍摄“去这里看鞋子。”
答案 0 :(得分:1)
Rails Validation允许您拥有自定义错误消息。假设每个鞋子记录都有一个URL,你的验证可能是这样的。
validates :name, uniqueness: {
message: ->(object, data) do
"#{data[:value]} is taken already! See this shoe here #{Shoe.find_by({name: data[:value]}).url}"
end
}
答案 1 :(得分:0)
如果您使用模板显示错误,可以执行以下操作:
<% if @shoe.errors.any? && @shoe.errors.include? :name %>
<p>
This name is already taken <%= link_to "Go here to see the shoe", shoe_path(Shoe.find_by(name: params[:shoe][:name]) %>
</p>
<% end %>
答案 2 :(得分:0)
我用sovalina回答了类似的东西。
<% if shoe.errors.any? %>
<div id="error_explanation">
<div class="alert alert-danger">
The form contains <%= pluralize(show.errors.count, "error") %>.
</div>
<ul>
<% shoe.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
<%if shoe.errors[:name][0] == "has already been taken" %>
<% @shoe = Shoe.where(name: shoe.name).first %>
<%= link_to "Go to the shoe", @shoe %>
<% end %>
</ul>
</div>
<% end %>
及其作品,当它已经取名的时候,它给我看了一个鞋子的链接。