Rails 3.2重构视图:如何选择路径?

时间:2015-01-23 11:24:36

标签: ruby-on-rails

我使用的是Rails 3.2和haml

我的观点中有很多这样的代码:

= link_to obj.get_title, @client ? agency_obj_path(@client.id, obj.get_id) : obj_path(obj.get_id)
...
= link_to t('aa.actions.edit_mini'), @client ? edit_agency_obj_path(@client.id, obj.get_id) : edit_obj_path(obj.get_id), class: 'action', title: t('aa.action_titles.objects.edit')

我想重构@client ? agency_obj_path(@client.id, obj.get_id) : obj_path(obj.get_id)。可以用一些帮手吗?

怎么做?

1 个答案:

答案 0 :(得分:0)

= link_to t('aa.actions.edit_mini'),edit_path(obj), 
  class: 'action', title: t('aa.action_titles.objects.edit')

现在在 applicaiton_helper.rb “agency_helper.rb”中定义您的edit_path助手方法(如果有)

注意:你不需要传递实例变量(@client),它可以在helper中使用。

#application_helper.rb
module ApplicationHelper

  def edit_path(obj) 
    return edit_obj_path(obj.get_id) if @client.blank?
    edit_agency_obj_path(@client.id, obj.get_id)
  end

end