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

plsヘルプ

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 に答える