我想在验证失败时给联系我们页面提供一个链接。我试过这个无济于事:
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 :(得分:1)
从Rails 3.1开始,你也可以这样做:
view_context.link_to "Contact Us", contact_path
另外,为了严格,原始海报的代码示例缺少关于“联系我们”的详细报价
答案 1 :(得分:0)
使用Rails 3
您需要在模型中包含ActionView :: Helpers :: UrlHelper,并将消息定义为lambda,以便在需要时进行解释
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
答案 2 :(得分: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 |是什么是给。我不得不把它们放进来修复一个愚蠢的参数编号不匹配错误。