2016-05-31 62 views
0

我有两个控制器(模板和估计)共享一个视图操作。在索引页我有以下代码:link_to用于两个共享(一个)视图控制器的标记

- 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") 

我想要的link_to“新估计”在索引页使用的模板控制器时,改变“新模板”。

回答

1

一些笔记:尽量避免在轨#eval方法,并params变量的控制器代码之外,所以:

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

和控制器调用render:

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 
+0

谢谢快速反应,我试图得到“未定义的局部变量或方法'env'为#.....错误 – Kourosh

+0

你如何将它传递给视图索引页? – Kourosh

+0

它工作了一次,我用inde替换了视图x,还有#在发送中丢失(:“new_ {env} _path”)。感谢您的帮助 – Kourosh

相关问题