action函数详解(自定义action)

来源:互联网 发布:淘宝网站首页源代码 编辑:程序博客网 时间:2024/05/17 06:37

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

0 0