在我的Rails 3应用程序中,我有许多带有布尔字段disabled
的模型。在这些模型的控制器中,我使用自定义操作disable
来使用Ajax切换disabled
字段。
示例(对于客户),
# routes.rb
resources :clients do
member do
get :toggle_disable, to: 'clients#disable', as: :disable
end
end
# clients_controller.rb
def disable
@client = Client.find(params[:id])
@client.update_attribute :disabled, !@client.disabled
render 'clients/update_client', format: :js
end
# update_client.js.erb
$('#client-<%= @client.id %>-details').html("<%= escape_javascript(render 'clients/client', client: @client) %>");
我的应用程序中至少有十个资源的代码。
问题
如何动态删除此代码并动态添加这些布尔字段的操作?我本可以创建父控制器或模块,但我不确定如何处理视图代码。
我应该可以做这样的事情
#clients_controller.rb
class ClientsController < ApplicationController
add_toggle_action :disable
end
答案 0 :(得分:0)
分享方法的两种主要方式:
继承:在ApplicationController
mixins:在模块中添加您的方法并将模块包含在适当的控制器中
由于你只想要一些控制器来获取方法,我将转向mixin。
您的控制器操作必须使用具有完整路径的视图,而不是相对路径,例如:
render '/shared/clien/update', format: :js
最后,您必须定义所有路线。