将链接放入验证消息RAILS

时间:2018-05-22 01:19:09

标签: mysql ruby-on-rails activerecord

有没有办法在rails中的表单错误消息中放置链接?

例如在我的模型中我有:

class Shoe < ApplicationRecord

  validates :name, uniqueness: true      

end

因此,在验证时,名称会显示默认消息“已将其命名为” 但是可以将已经取名的鞋子链接到鞋子上吗? 像这样:

此名称已被拍摄“去这里看鞋子。”

3 个答案:

答案 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 %> 

及其作品,当它已经取名的时候,它给我看了一个鞋子的链接。