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'

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

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

真棒Rails :)

于 2012-06-19T09:03:37.953 回答
0

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

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