【发布时间】:2017-03-08 20:18:42
【问题描述】:
我想在views/companies/edit.html.haml 中为destroy_referrals 方法创建一个按钮,但我无法让该按钮工作。为了在按钮上调用操作,我尝试创建新路由,但我仍然收到错误无法为 CompaniesController 找到操作“destroy_referrals”
我在Admin::CompaniesController 中创建了一个destroy_referrals 方法,
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/companies/edit.html.haml
= button_to 'Destroy Referrals', destroy_referral_path
= button_to 'Destroy Referrals', admin_company_destroy_referral_path(@company)
【问题讨论】:
-
花点时间阅读您的问题。问问自己你使用的词是什么意思,以及是否可能有一些不那么模棱两可的词会更清楚。例如。 “为了调用按钮上的操作,我尝试创建一条新路线”。您不会“调用”“动作”,“按钮”是一个 UI 概念,也是一个 HTML 标记(两者都没有明确定义的“动作”)。您是否创建了一条新路线,或者您只是尝试过?您如何预计这会改变一切?
-
我可以通过控制台运行该方法并按预期执行。我现在正在尝试将功能扩展到 UI 并拥有一个按钮。
-
该错误似乎表明它不会进入 admin/companies 控制器。您可以发布其余的路线文件吗?请求是否被其他路由拦截?
-
@Swards 路由需要是
delete 'companies/:id/destroy_referrals' => 'companies#destroy_referrals', :as => 'destroy_referrals'
标签: mysql sql ruby-on-rails