Как создать рельсовую ссылку с сообщением проверки AR - PullRequest
3 голосов
/ 07 октября 2010

Я хотел бы дать ссылку на страницу контактов в случае неудачной проверки.Я пробовал это безрезультатно:

validates_acceptance_of :not_an_agency, :on => :create,
:message => "must be confirmed. If you are an agency please #{link_to "Contact Us", contact_path}"

Кто-нибудь знает, как пройти этот?

Джек

Ответы [ 3 ]

1 голос
/ 26 мая 2011

Начиная с Rails 3.1 вы также можете сделать:

view_context.link_to "Contact Us", contact_path

Кроме того, просто чтобы быть строгим, в коде оригинального плаката отсутствует закрывающая цитата "Свяжитесь с нами"

0 голосов
/ 31 января 2012

Ответ Шингары поможет вам с частью "link_to", но он все еще падает на части "contact_path". Мое решение:

validates_acceptance_of :not_an_agency, :on => :create,
                      :message => lambda {|e,f| "must be confirmed. If you are an agency please <a href=\"#{Rails.application.routes.url_helpers.contact_path}\">Contact Us</a>".html_safe}

Я хочу просто набрать <a href.../>, а не include ActionView::Helpers::UrlHelper. Это до вас.

Также обратите внимание на .html_safe. Это на самом деле бесполезно, потому что Rails теряет его, когда добавляет имя поля, и вам придется снова сделать его безопасным на стороне представления. Но я в любом случае помещаю это в надежде, что Rails в конечном итоге исправит этот кусок поломки.

И я понятия не имею, что такое | e, f | для. Я должен был положить их, чтобы исправить глупую ошибку несоответствия номера аргумента.

0 голосов
/ 07 октября 2010

с рельсами 3

вам нужно включить ActionView :: Helpers :: UrlHelper в вашу модель и определить сообщение как лямбду, которое будет интерпретироваться при необходимости

class XXX < AR
  extend ActionView::Helpers::UrlHelper

  validates_acceptance_of :not_an_agency, :on => :create,
                          :message => lambda {"must be confirmed. If you are an agency please #{link_to "Contact Us", contact_path}"}

end

с рельсами 2

это то же самое, но вам нужно каждый раз определять: host.

class XXX < AR
  extend ActionView::Helpers::UrlHelper

  validates_acceptance_of :not_an_agency, :on => :create,
                          :message => lambda {"must be confirmed. If you are an agency please #{link_to "Contact Us", contact_path(:host => 'http://example.org')}"}

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...