搜索模型?

时间:2012-06-19 08:43:00

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

所以我试图通过表单搜索模型。基本上我的最终目标是能够在我的用户模型中为一个“用户”分配一个值,如果此搜索设法获得至少一个搜索结果,只有当用户名和密码在组织的表单上匹配时才会发生。

控制器:

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>

我无法让这个工作。我究竟做错了什么? 任何帮助/建议都会非常感激!

3 个答案:

答案 0 :(得分:1)

你处理params的方式是不正确的。由于您使用的是form_for,因此表单中的数据将封装在散列中,即params [:organization]

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

但是我建议你在方法的这行代码之前添加一个调试器并自己做实验!

答案 1 :(得分:1)

您可以使用动态查找程序方法并提供相应的属性值进行搜索。 例如

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

我们正在搜索电子邮件和密码,在查找方法电子邮件中首先是第一个参数应该是电子邮件的值,第二个是密码 有趣的是,您可以使用模型属性的任意组合进行搜索

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

令人敬畏的Rails:)

答案 2 :(得分:0)

根据方法名称find_by_username_and_password,您必须传递两个参数:

 Organization.find_by_username_and_password('username', 'password')