我想为destroy_referrals方法在视图/companies/ed.html.haml中创建一个按钮,但我无法让该按钮工作。要调用按钮上的操作,我尝试创建一个新的路由,但我仍然收到错误操作'destroy_referrals‘为CompaniesController找不到
我在destroy_referrals中创建了一个Admin::CompaniesController方法
def destroy_referrals
load_company
@company.destroy_referrals
flash[:notice] = 'Referrals deleted'
redirect_to :action => :index
end 它操作company.rb模型来查找来自具有相同company_id的用户的引用,并销毁它们,
def destroy_referrals
Referral.joins(:user).where("users.company_id = ?", self.id).destroy_all
end有些东西我试过了.
routes.rb
post '/destroy_referrals' => 'admin/companies#destroy_referrals', :as => 'destroy_referrals'意见/公司/编辑.views.views
= button_to 'Destroy Referrals', destroy_referral_path
= button_to 'Destroy Referrals', admin_company_destroy_referral_path(@company)发布于 2017-03-08 20:41:49
button_to方法创建一个HTML按钮,该按钮的行为与链接类似,但具有不同的视觉样式。href属性,浏览器可以通过向其发出后续的HTTP来遵循该属性。/products/1请求可能会路由到ProductsController上的show操作。DELETE请求,该请求将被路由到由destroy方法定义的相关控制器的destroy操作。link_to助手发送这样的请求,并在参数中指定method: :delete。resources :products。或者,可以定义一个显式路由:delete '/products/:id' => 'products#destroy'。总之,Rails给您的错误是,它无法在destroy_referrals中找到CompaniesController方法。在Admin::CompaniesController中定义方法不会做任何事情来解决这个问题。
发布于 2017-03-09 19:13:20
@Swards该路由需要删除‘companies/:id/ delete _referrals’=>‘companies#delete_destroy_referrals’,作为=> 'destroy_referrals‘
我想这可能是个简单的解决办法。您还需要管理名称空间吗?
考虑一下这一点,而不是创建一个命名的路由
namespace 'admin' do
resources :companies do
delete 'destroy_referrals', :on => :member, :as => 'destroy_referrals'
end
end并将其称为admin_destroy_referrals_company_path
= button_to 'Destroy Referrals', admin_destroy_referrals_company_path(@company), :method => :deletehttps://stackoverflow.com/questions/42681152
复制相似问题