2016-05-31 18 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

相關問題