所以我试图通过表单搜索模型。基本上我的最终目标是能够在我的用户模型中为一个“用户”分配一个值,如果此搜索设法获得至少一个搜索结果,只有当用户名和密码在组织的表单上匹配时才会发生。
控制器:
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>
我无法让这个工作。我究竟做错了什么? 任何帮助/建议都会非常感激!
答案 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')