如何在模型中传递url helper:locale参数?

时间:2016-11-19 08:25:30

标签: ruby-on-rails

我需要在模型contract_url(合约)中传递费用属性 我在模型CheckoutService中有以下代码:

delegate :url_helpers, to: 'Rails.application.routes'

def contract_url(cont)
    url_helpers.contract_url(cont)
  end

在charge_attributes中,我需要为属性secureUrl设置url,例如:

charge_attributes 
{
  secureReturnUrl: contract_url(contract)
}

我收到错误:

ActionController::UrlGenerationError: No route matches {:action=>"show", :controller=>"contracts", :locale=>#<Contract id: 13, ..} missing required keys: [:id]

rake routes:

合同GET(/:locale)/contracts/:id(.:format)合约#show {:locale =&gt; / en | fr /}                                                                             PATCH(/:locale)/ contracts /:id(。:format)

如果我在控制器或视图中调用此url帮助器工作正确。 如何在模型中的url中传递当前区域设置?谢谢。

1 个答案:

答案 0 :(得分:1)

将参数:locale添加到url。 I18n.locale返回当前区域设置。

contact_url(contact, locale: I18n.locale)