Я видел ваш предыдущий вопрос. Он был удален во время отправки моего ответа. Это похоже на этот вопрос, так что вот мой ответ на предыдущий и этот вопрос.
Я искал пользователей в зависимости от их страны. Вот что я сделал для этого:
Сначала я создал новую колонку страна, основываясь на том, что я собираюсь искать. Команда
$ rails generate migration add_country_to_users country:string
$ rake db:migrate
Добавьте эту строку в attr_accessible в модели пользователя следующим образом:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :email, :password, :password_confirmation, :country
validates_presence_of :country
..........
attr_accessible
позволяет выполнять массовое задание. Не забудьте добавить новый столбец здесь.
Как только это будет сделано, вы теперь готовы написать функцию контроллера. Я назвал мой network
, потому что я хочу отображать пользователей в зависимости от страны. Моим поисковым словом будет страна, и я покажу всех пользователей, принадлежащих к одной конкретной стране. Определение функции выглядит следующим образом:
class UsersController < ApplicationController
def network
@title = "All users"
@users = User.find_all_by_country(User.find(params[:id]).country)
end
end
На ваш вопрос, если вы хотите отображать пользователей по имени, сделайте это
User.find_all_by_name(User.find(params[:id]).name)
или что-то подобное, основанное на нашем поисковом слове.
Теперь подходит к дисплею. Я создал новую страницу под views/users/
как network.html.erb
, так как я хочу отобразить сеть пользователей, принадлежащих к стране. Сначала получите одну форму, из которой вы будете вводить данные, то есть, где вы вызываете поиск. У меня есть ссылка в шапке моей формы. Ссылка следующая:
<li><%= link_to "Network", network_user_path(current_user) %></li>
После того, как пользователь нажмет эту кнопку, появится следующая форма:
<h1>All users</h1>
<ul class="users">
<% @users.each do |user| %>
<li>
<%= gravatar_for user, :size => 30 %>
<%= link_to user.name, user %>
</li>
<% end %>
</ul>
Пока все хорошо. Теперь последний шаг - подключить их, добавив их в файл routes.rb
. Добавьте в этот файл следующее:
MyApp :: Application.routes.draw do
resources :users do
member do
get :following, :followers, :network, :news
end
end
end
Так вот, что я сделал для своего приложения, и оно сработало. Я надеюсь, что это помогает.