0

だから私はフォームを通してモデルを検索しようとしています。基本的に、私の最終目標は、この検索で​​少なくとも1つの検索結果が得られた場合に、ユーザーモデルで「ユーザー」に値を割り当てることができるようにすることです。これは、組織のフォームでユーザー名とパスワードの両方が一致する場合にのみ発生します。

コントローラー:

class OrganizationsController < ApplicationController
    def join
        @organization = Organization.find_by_username_and_password(params[:organization])
    end
end

景色:

<div class="row">
  <div class="span6">

    <%= form_for(@organization) do |f| %>

      <%= f.label :username %>
      <%= f.text_field :username %>

      <%= f.label :password %>
      <%= f.password_field :password %>

      <br />
      <%= f.submit "Join!", class: "btn btn-large btn-primary" %>
    <% end %>
  </div>
</div>

私はこれを機能させることができません。私は何が間違っているのですか?どんな助け/推薦も本当にありがたいです!

4

3 に答える 3

1

パラメータの処理方法が正しくありません。form_forを使用しているため、フォーム内のデータはハッシュ、つまりparams [:organization]にカプセル化されます。

organization = params[:organization]
@organization = Organization.find_by_username_and_password(organization[:username], organization[:password])

ただし、メソッドのこのコード行の前にデバッガーを追加して、自分で実験することをお勧めします。

于 2012-06-19T08:55:36.153 に答える
1

動的ファインダ メソッドを使用して、それぞれの属性値を指定して検索できます。例えば

User.find_by_email_and_password 'test@email','password'

私たちは電子メールとパスワードを検索しています。ファインダーメソッドでは電子メールが最初に来るので、最初のパラメータは電子メールの値で、2番目のパラメータは興味深いパスワードである必要があります。モデルの属性の任意の組み合わせを使用して検索できます

User.find_by_password_and_email 'password','test@email'

素晴らしいレール:)

于 2012-06-19T09:03:37.953 に答える
0

メソッド名によるとfind_by_username_and_password、2つのパラメータを渡す必要があります。

 Organization.find_by_username_and_password('username', 'password')
于 2012-06-19T08:57:26.313 に答える