Rails 3应用程序中的简单搜索表单不显示
我跑过了railscast#37,似乎甚至无法让我的搜索表单显示在我的索引页上。任何想法什么是我的代码错了?提前致谢!任何帮助是极大的赞赏。Rails 3应用程序中的简单搜索表单不显示
这里是索引页,其中表格位于:
<h1>All users</h1>
<% form_tag users_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
继承人的控制器:
class UsersController < ApplicationController
...
def index
@title = "All users"
@users = User.paginate(:page => params[:page])
@usersearch = User.search(params[:search])
end
...
最后,user.rb文件:
...
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
all
end
end
我看到您以前的问题。我在提交答案时被删除。这看起来类似于这个问题,所以这里是我对前一个问题和这个问题的回答。
我根据他们的国家搜索了用户。所以这就是我为此所做的: 首先,我根据我要搜索的内容创建了一个新的列国家。该命令是
$ 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。抽奖做
resources :users do
member do
get :following, :followers, :network, :news
end
end
end
所以这就是我为我的应用程序,它的工作。我希望它有帮助。
我没再看看,但最近Rails版本中的form_tag必须有一个等号。你也应该在开发模式下得到一个错误信息。 尝试<%= form_tag users_path, :method => 'get' do %>
谢谢!那工作 – BTHarris 2012-02-05 19:06:13
做到了!万分感谢!如果我有更多的声望,我会给你+1 – BTHarris 2012-02-05 20:55:20