0

我是 ROR 的新手,我试图将用户的字段从 null 更新为 1。我已经为此编写了 c 控制器

def update_users
  Rails.logger.info("in Update users")
  @user = User.find(params[:id])
  @user.deleted=1    

  respond_to do |format|
    if @user.update_attributes(params[:user])
      format.html { redirect_to @user, notice: 'User was successfully Deleted.' }
      format.json { head :no_content }
    else
      format.html { render action: "edit" }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

并在路线中将其定义为-

match '/update_users' => 'users#update_users', :as => 'update_users', :via => [:put]

我对此的看法是——

= link_to raw('<span class="delete">Delete User</span>'), update_users_path(@user.id),
                                :method => :put,
                                :data => { :confirm => 'Are you sure?' },
                                :remote =>true

但在输出 i 中,得到 /update_users.7 而不是 /update_users/7。在网络方面我得到-

ActiveRecord::RecordNotFound in UsersController#update_users

Couldn't find User without an ID

请帮忙

4

2 回答 2

3

您的路由不正确 - 您的新操作应该是现有用户路由的成员操作。

有关更多信息,请参阅http://guides.rubyonrails.org/routing.html#adding-more-restful-actions

于 2013-02-20T13:44:25.987 回答
1

尝试将您的路线更改为:

put '/update_users/:id' => 'users#update_users'

这样您就可以正确地将您的ID传递给它。那么您的链接助手将是:

update_users_path(@user)

就像现在一样,您还没有告诉从哪里获取 ID 的路线。

于 2013-02-20T13:43:56.813 回答