controller中自定义action:
1.添加路由 delete '/dsdfas/:id/fdas/:home_id' => “controller#action”
2.controller中定义该action的函数
3.方法一:查其路由路径 类似edit_manage_path的,然后<%= link_to '自己命名', XXXXX_path(@a, f.b), method: :delete %>, 则匹配上路由delete动作的URL,会把URL的:id和:home_id分别由变量@a, f.b来替换,并且params传递时候也会把两个变量@a和f.b的值分别存在params[:id]和params[:home_id]中
方法二: 路由delete动作的url是 '/manage/subjects/:id', <%= link_to "delete", [:manage, @subject], method: :delete %>用@subject变量的值来替换url中的:id,并且@subject的值保存在params[:id]中
!!!!重要:
rails默认路由action包含index, new, create, update, destroy, show, edit, 也可能有自定义的action。只要action有对应页面的,该action的作用就是向该页面展示数据,例如(index, new, show, edit)。只要action没有对应试图的,则该action的左右就是处理数据,函数结束前最后一条语句必须是跳转(redirect_to :back跳转回原来的页面)例如(create, update, destroy)
例:
有对应页面的展示数据:
def new
@subject = Subject.new
end
没对应页面的处理数据, 最后必须跳转到一个页面, 否则没东西显示会出错
def destroy
Subject.find_by(id: params[:id]).delete
redirect_to manage_subjects_path
end