Ruby on Railsに関する質問です。

restful_authenticationのユーザー登録を、フォームを通さずに、直接httpリクエストをして行いたいと思っています。これを実現するための、具体的な実装方法を教えてください。
通常のフォームを通した場合のユーザー登録はうまくいっていますが、上記の方法ではうまくいきませんでした。
コメント欄に今までの経緯と、関係がありそうなコードを記載しておきます。
当方初級レベルです。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/02/01 21:45:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:hedachi No.1

回答回数4ベストアンサー獲得回数2

ポイント60pt

localhost:3000/register/direct?user[name]=user1&user[division]=div&user[password]=password&user[password_confirm]=password

とかどうでしょう。

id:puriketu99

回答ありがとうございます。

あしたためしてみる!

2011/01/25 22:17:09
  • id:puriketu99
    今までの経緯を説明致します。

    1.以下のhttpリクエストを直接送りました(ローカル環境。userのフィールドはnameとdivisionとpasswordのみ)。

    1-1
    localhost:3000/register/direct?user[name]=user1&user[division]=div&user[password]=password
    →saveには失敗するが、指定のページにredirectされる

    1-2
    localhost:3000/register/direct?user[a]=user1&user[division]=div&user[password]=password
    →パラメータの指定の正誤の確認のために、フィールド名を変更する(name→a) redirectはされず、エラー画面が表示される

    2.1-2を行った結果エラーがでました
    Response
    Headers:
    {"Content-Type"=>"",
    "Set-Cookie"=>["auth_token=; path=/; expires=Thu,
    01-Jan-1970 00:00:00 GMT"],
    "Cache-Control"=>"no-cache"}

    3.上記エラーをヒントに、user登録用のレンダリングされたhtmlのソースを見たところ、以下の記述を見つけましたが、仕組みがよくわかりませんでした。
    <input name="authenticity_token" type="hidden" value="FncFdAAhe0KpjzVRcRZdfU19P5C3v2pCXjP0Zc4P/Bk=" />
  • id:puriketu99
    ■routes.rb

    ActionController::Routing::Routes.draw do |map|
    (中略)
    map.register '/register/direct' , :controller => 'users', :action => 'createdirect'
    map.signup '/signup/', :controller => 'users', :action => 'new'
    (中略)
    end

    ■users_controller.rb
    class UsersController < ApplicationController
    # Be sure to include AuthenticationSystem in Application Controller instead
    include AuthenticatedSystem


    # render new.html.erb
    def new
    @user = User.new
    end

    (中略)

    def createdirect
    logout_keeping_session!
    @user = User.new(params[:user])
    success = @user && @user.save

    if success && @user.errors.empty?
    self.current_user = @user # !! now logged in
    redirect_back_or_default('/')
    flash[:notice] = "Thanks for signing up!"
    else
    flash[:notice] = "save miss"
    redirect_back_or_default('/')
    end
    end
    end

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません