0

こんにちは私はしばらくの間この問題に悩まされてきました、そしてあなたの助けをいただければ幸いです。ブラウザクエリ文字列やスマートフォンなどの外部ソースがフォームにモデルのユーザー情報を入力し、ユーザー作成アクションを押してデータをデータベースに書き込むことができるようにするAPIを作成しています。以下のコードで私が間違っていることを教えてください。

また、@ user = User.new(params [:user])のようなコードがある場合、このアプローチは、ユーザーがフォームにデータを入力したときにのみ機能することも確認しました。

そして、@ user = User.new(name:params [:name]、location:params [:location]、password = params [:password]、email:params [:email])のようなコードがある場合、これはコードはクエリ文字列エントリに対してのみ機能し、クエリ文字列と通常のフォーム送信の両方に対しては機能しません。

それはなぜですか。また、Users Controller Createアクションで上記のコードを記述して、両方の状況に対応できるようにするにはどうすればよいですか?

使用されるURL:localhost:3000 / users / create?name = John && email = john@email.com && password = secret && location = SanFrancisco&date = 06122012

日付は文字列型ですが、データベースには表示されません。なんで?他のすべてはします。

UsersController.rb

def create

@user = User.new(params[:user])

if @user.save
session[:uid] = @user.id
redirect_to thanks_path, notice: "Welcome #{@user.name}!"
else
redirect_to root_path
end

終わり

新規ユーザーフォーム:

                <%=u.text_field :name, placeholder: "Name"%><br>
                <%=u.text_field :email, placeholder: "Email"%><br>
        <%=u.password_field :password, placeholder: "Password"%><br>
        <%=u.text_field :location, placeholder: "City"%><br> 
                <%=u.text_field :date, placeholder: "Date"%><br>

        <%if params[:partner_id]%>

        <%=u.hidden_field :partner_id, value: params[:partner_id]%>

        <%end%>

               <button class="btn btn-large btn-primary">Enter</button>

また、通常のWebフォーム以外のユーザー作成用にremotecreateという別のメソッドを作成しようとしました。クエリ文字列にremotecreateと入力しましたが、機能しませんでした。

def remotecreate @user = User.create(name:params [:name]、email:params [:email]、password:params [:password]、location:params [:location]、date:params [:date])if @ user.save session [:uid] = @ user.id redirect_to thanks_path、notice: "Welcome#{@ user.name}" else redirect_to root_path end end

ありがとう!

4

1 に答える 1

1

あなたのコントローラーで..

def create
  @user = User.new

  if params[:user] && params[:user][:email]  # Form submission
     @user = User.new(params[:user])

  else      # Url-inlined submission
    @user = User.new
    @user.attributes = params
  end

@ user.attributes = paramsをテストしませんでしたが、機能するはずだと思います。あなたはいつでもすることができます

@user.email = params[:email]
@user.something = params[:somethings]
...
于 2012-06-26T12:48:58.627 に答える