Ruby on rails 搜索模型?

Ruby on rails 搜索模型?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,所以我试图通过一个表单来搜索一个模型。基本上,我的最终目标是,如果此搜索能够获得至少1个搜索结果,则能够在我的用户模型中为“用户”分配一个值,这只有在组织的表单上用户名和密码匹配时才会发生 控制员: class OrganizationsController < ApplicationController def join @organization = Organization.find_by_username_and_password(params[:organ

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

控制员:

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

<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>


我就是不能让它工作。我做错了什么?
任何帮助/建议都将不胜感激

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

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

不过,我建议您在方法中的这行代码之前添加一个调试器,然后自己进行实验

根据方法名称
通过用户名和密码查找,您必须传递两个参数:

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

您可以使用DynamicFinder方法并提供相应的属性值进行搜索。 e、 g

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

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

很棒的Rails:)

我似乎得到了一个错误
对于nil:NilClass的未定义方法“[]”我做错了什么?你能详细说明一下吗?也就是说,您到底尝试了什么?我将您在答案中所写的内容准确地输入到OrganizationsController中的join方法中。其他代码保持原样。我尽可能地改变了它,但它总是归结为这个错误。错误指向
@organization=organization.find\u by\u username\u和\u password(organization[:username],organization[:password])
从Rails 4开始,动态查找器方法将不再适用于多个字段。尝试类似这样的方法来验证你的应用程序:User.where(:password=>'password',:email=>'test@email)。首先
User.find_by_password_and_email 'password','test@email'