我想在views / companies / edit.html.haml中为destroy_referrals
方法创建一个按钮,但我无法使该按钮起作用。要在按钮上调用操作,我尝试创建一个新路由,但我仍然收到错误找不到公司控制器的操作'destroy_referrals'
我在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'
视图/公司/ edit.html.haml
= button_to 'Destroy Referrals', destroy_referral_path
= button_to 'Destroy Referrals', admin_company_destroy_referral_path(@company)
答案 0 :(得分:3)
button_to
方法创建一个HTML按钮,其行为与链接类似,但具有不同的视觉样式。 href
属性,浏览器可以通过发出后续HTTP请求来跟踪该属性。/products/1
的RESTful请求可能会路由show
上的ProductsController
操作。DELETE
请求,该应用程序将路由到由{{定义的相关控制器的destroy
操作。 1}}方法。destroy
帮助程序发送此类请求,并在参数中指定link_to
。method: :delete
。或者,可以定义显式路由:resources :products
。总而言之,Rails给出的错误是它无法在delete '/products/:id' => 'products#destroy'
中找到destroy_referrals
方法。在CompaniesController
中定义方法无法解决此问题。
答案 1 :(得分:0)
@Swards需要删除的路线 'companies /:id / destroy_referrals'=> '公司#destroy_referrals', :as => 'destroy_referrals'
我认为这可能是一个简单的修复。你还需要admin命名空间吗?
考虑这一点,而不是创建命名路线
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 => :delete