Поместите ссылку в сообщение проверки RAILS - PullRequest
0 голосов
/ 22 мая 2018

Есть ли способ поместить ссылку в сообщение об ошибке формы в рельсы?

например, в моей модели у меня есть:

class Shoe < ApplicationRecord

  validates :name, uniqueness: true      

end

Так, когда проверяет имя показывает по умолчаниюсообщение "Название уже занято" Но есть ли возможность поставить ссылку на туфлю с названием уже занято?как это:

это имя уже занято "Идите сюда, чтобы увидеть обувь".

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Я сделал что-то похожее с совалиным ответом.

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

и его работами, когда название его уже занято, покажите мне ссылку на туфлю.

0 голосов
/ 23 мая 2018

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
}
0 голосов
/ 22 мая 2018

Если вы используете шаблон для отображения вашей ошибки, вы можете сделать что-то вроде:

<% 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...