2010-10-07 1 views
3

Я хотел бы указать ссылку на страницу с сообщением об отказе в валидации. Я пробовал это безрезультатно:Как создать ссылку на рельсы с сообщением подтверждения AR

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

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

Джек

ответ

0

С Rails 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 

С Rails 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 
+0

Спасибо за быстрый ответ. Я попробовал ваше решение Rails 3, но все равно получаю ту же ошибку - неопределенная локальная переменная или метод 'contact_path 'для #

+0

BTW есть небольшая опечатка, которая не закрыла строку после« Свяжитесь с нами » –

+0

Я обновляю свой ответ с помощью исправления опечатки. Так что это больше, чем включать :) – shingara

1

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

view_context.link_to "Contact Us", contact_path 

Кроме того, только чтобы быть строгим, пример кода оригинального автора отсутствует близкий котировку на «Контакты»

+0

Хороший первый ответ. – thomasfedb

+0

Исправлена ​​опечатка thx –

0

Shingara годов ответ помогает вам с частью «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 | для. Я должен был вставить их, чтобы исправить ошибочную ошибку несогласованного аргумента.

Смежные вопросы