如何使用AR验证消息生成rails链接

时间:2010-10-07 10:49:01

标签: ruby-on-rails

我想在验证失败时给联系我们页面提供一个链接。我试过这个无济于事:

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 个答案:

答案 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 |是什么是给。我不得不把它们放进来修复一个愚蠢的参数编号不匹配错误。