Mit Rails 4 und Rubin 2.2, Ich habe meine User-Modell, dasMehrere Suchfelder in Schienen 4
hat folgende Attribute
- Benutzername
- aktiv
Jetzt muss ich ein Suchtextfeld für Benutzername, E-Mail und Dropdown für aktive Attribute erstellen. Ich habe meine
user.rb
def self.usernames(username)
user = all
user = user.where("username LIKE ?", "%#{username}%")
return user
end
def self.emails(email)
user = all
user = user.where("email LIKE ?", "%#{email}%")
return user
end
def self.actives(active)
user = all
user = user.where("active LIKE ?", "%#{active}%")
return user
users_controller.rb
def index
@users = User.all
@users = @users.usernames(params[:username]) if params[:username].present?
@users = @users.emails(params[:email]) if params[:email].present?
@users = @users.actives(params[:active]) if params[:active].present?
end
index.html.erb
h1>Listing Users</h1>
<div id="forms">
<%= form_tag users_path, :method=> "get" do %>
<%= label_tag :username, "Name" %>
<%= text_field_tag :username %>
<%= label_tag :email, "Email" %>
<%= text_field_tag :email%>
<%= label_tag :active, "Active" %>
<%= select_tag :active, options_for_select([['Active', true], ['Inactive', false]]) %>
<%= submit_tag "Search" %>
<%= link_to "Clear Search", request.path, class:"cancel-button" %>
<% end %>
</div>
<div id="users"><%= render "users" %></div>
<%= button_to "Create User", new_user_path, method: :get %>
schema.rb
create_table "users", force: :cascade do |t|
t.string "email", limit: 255, default: "", null: false
t.string "encrypted_password", limit: 255, default: "", null: false
t.string "reset_password_token", limit: 255
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.string "name", limit: 255
t.integer "sign_in_count", limit: 4, default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip", limit: 255
t.string "last_sign_in_ip", limit: 255
t.string "confirmation_token", limit: 255
t.datetime "confirmed_at"
t.datetime "confirmation_sent_at"
t.string "unconfirmed_email", limit: 255
t.integer "failed_attempts", limit: 4, default: 0, null: false
t.string "unlock_token", limit: 255
t.datetime "locked_at"
t.datetime "created_at"
t.datetime "updated_at"
t.string "username", limit: 255
t.boolean "active", default: false
Nun, wenn ich von Benutzernamen oder E-Mail zu filtern, ich versuche, es gibt mir kein Ergebnis.
Nach ist das Ergebnis in der Konsole,
Started GET "/users?utf8=%E2%9C%93&username=alok&email=&active=true&commit=Search" for ::1 at 2016-04-18 13:10:09 +0530
Processing by UsersController#index as HTML
Parameters: {"utf8"=>"✓", "username"=>"alok", "email"=>"", "active"=>"true", "commit"=>"Search"}
User Load (1.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = ? ORDER BY `users`.`id` ASC LIMIT 1 [["id", 11]]
{"utf8"=>"✓", "username"=>"alok", "email"=>"", "active"=>"true", "commit"=>"Search", "controller"=>"users", "action"=>"index"}
User Load (1.0ms) SELECT `users`.* FROM `users` WHERE (username LIKE '%alok%') AND (active LIKE '%true%')
Rendered users/_users.html.erb (7.2ms)
Rendered users/index.html.erb within layouts/application (49.3ms)
Completed 200 OK in 671ms (Views: 550.7ms | ActiveRecord: 49.9ms)
ich folgende Post genannt habe, aber ähnliches Ergebnis bekommen, keine Ausgabe, Bitte lassen Sie mich wissen, wenn ich etwas fehle,
Multiple search fields in rails
Welche Art ist das ‚aktive‘ Attribut in Ihrem Benutzermodell das Ransack Juwel, um zu versuchen, das wollen? – mentalic
Boolean und Standard auf falsch – cyborg