我有两个控制器(模板和估计)共享一个视图操作。在索引页面中,我有以下代码:
- 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”。
答案 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