如何在rails控制器中添加不同的编辑/更新方法?

时间:2017-02-18 07:54:46

标签: ruby-on-rails

控制器:

def edit  
end

def update
    respond_to do |format|
      if @item.update(item_params)
        format.html { redirect_to @item, notice: 'Item was successfully updated.' }
        format.json { render :show, status: :ok, location: @item }
      else
        format.html { render :edit }
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end
  end

我想添加其他类似的方法。仅更新1列项目,我想不向用户显示其他列。     我有所有必要的观点。

def another_edit
end

def another_update
 respond_to do |format|
      if @item.update(params[:item].permit(:amount))
        format.html { redirect_to @item, notice: 'Item was successfully updated.' }
        format.json { render :show, status: :ok, location: @item }
      else
        format.html { render :edit }
        format.json { render json: @item.errors, status: :unprocessable_entity }
      end
    end

我认为我的路线错了。然后尝试了

  resources :items do
    collection do
        get 'add', on: :edit
    end
  end

get 'items/another_edit'

有可能吗?请帮帮我。

1 个答案:

答案 0 :(得分:1)

您需要在路由中将这些端点添加为“成员”(不是集合):

resources :items do
   get :another_edit, on: :member
   put :another_update, on: :member
end

然后将使用“id”参数构建路由。