link_to标记用于具有共享(一个)视图的两个控制器

时间:2016-05-31 20:57:05

标签: ruby-on-rails ruby

我有两个控制器(模板和估计)共享一个视图操作。在索引页面中,我有以下代码:

- if can? :create, Estimate
  = link_to "New Estimate", eval("new_#{params[:controller].singularize}_path"), class: 'btn btn-primary btn-xs', data: ajax_modal_data("form")

我希望在使用模板控制器时,将index_to“New Estimate”更改为索引页面中的“New Templates”。

1 个答案:

答案 0 :(得分:1)

一些备注:尝试在rails中避免#eval方法,在控制器代码之外尝试params变量,所以:

= link_to "New #{env.camelize}", send(:"new_#{env}_path"), class: 'btn btn-primary btn-xs', data: ajax_modal_data("form")

并调用控制器进行渲染:

 render :index, locals: { env: safe_controller_name }

 def safe_controller_name
    controllers = %w(templates estimates)
    if ! controllers.include? params[:controller]
       raise
    end
    params[:controller].singularize
 end