Ruby on rails 搜索模型?
所以我试图通过一个表单来搜索一个模型。基本上,我的最终目标是,如果此搜索能够获得至少1个搜索结果,则能够在我的用户模型中为“用户”分配一个值,这只有在组织的表单上用户名和密码匹配时才会发生 控制员: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
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'