Rails 最后调用一个方法
Rails Call A Method Lastly In Action
我的控制器中有类似的东西:
def index
@votes = Vote.all
end
private
def search
@votes = OtherVotes.all
end
我想在索引操作中使用搜索方法,但我不想从索引中删除我的@votes 变量。如果我使用 before_action
,它会在操作之前调用方法,所以 @votes 不会改变。是否可以在我的 votes 变量之后调用搜索方法或忽略变量而不删除。
尝试
class TempController < ApplicationController
after_action :search
def index
@votes = Vote.all
end
private
def search
@votes = OtherVotes.all
end
end
当我想要构建一个简单的搜索时,我通常会使用这种方法:
http://railscasts.com/episodes/37-simple-search-form
在您的 vote.rb 文件中创建一个方法:
class Vote
def self.search(search)
if search
self.where(:all, conditions: ['name LIKE ?', "%#{search}%"])
else
self.where(:all)
end
end
end
这意味着当您执行 Vote.search('term') 时,您将调出任何具有相似名称的记录。替换您要搜索的任何术语的名称(即标题或类别)。
如果没有输入搜索词,此方法只需 returns 每个实例。这意味着您可以让您的控制器看起来像这样:
def index
@votes = Vote.search(params[:search])
end
最终的视图如下:
<% form_tag votes_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
这将使用搜索词参数向 votes_path(您的控制器上的索引操作)发送获取请求。如果输入一个,则搜索将 return 相关实例,否则将 return 全部。
我的控制器中有类似的东西:
def index
@votes = Vote.all
end
private
def search
@votes = OtherVotes.all
end
我想在索引操作中使用搜索方法,但我不想从索引中删除我的@votes 变量。如果我使用 before_action
,它会在操作之前调用方法,所以 @votes 不会改变。是否可以在我的 votes 变量之后调用搜索方法或忽略变量而不删除。
尝试
class TempController < ApplicationController
after_action :search
def index
@votes = Vote.all
end
private
def search
@votes = OtherVotes.all
end
end
当我想要构建一个简单的搜索时,我通常会使用这种方法:
http://railscasts.com/episodes/37-simple-search-form
在您的 vote.rb 文件中创建一个方法:
class Vote
def self.search(search)
if search
self.where(:all, conditions: ['name LIKE ?', "%#{search}%"])
else
self.where(:all)
end
end
end
这意味着当您执行 Vote.search('term') 时,您将调出任何具有相似名称的记录。替换您要搜索的任何术语的名称(即标题或类别)。 如果没有输入搜索词,此方法只需 returns 每个实例。这意味着您可以让您的控制器看起来像这样:
def index
@votes = Vote.search(params[:search])
end
最终的视图如下:
<% form_tag votes_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
这将使用搜索词参数向 votes_path(您的控制器上的索引操作)发送获取请求。如果输入一个,则搜索将 return 相关实例,否则将 return 全部。