我正在关注Ryan Bates' guide on search functionality。我现在已经省略了搜索算法的实现,只返回到目前为止它正在做它应该做的事情,唯一的问题是现在当我访问/发布时,我会自动重定向到/ posts / 1。
在我的帖子控制器中:
def show
end
def index
@post = Post.search params[:search]
puts ("----------------" + @post.to_s + "-----------")
respond_to do |format|
format.html { redirect_to @post }
end
end
在我的index.html.erb中:
<%= form_tag posts_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
在我的Posts.rb
中def self.search(search)
#insert search method here
return Post.find_by_id(1)
end
如何在不自动重定向的情况下访问/发布和搜索我的表单?
答案 0 :(得分:1)
一旦你将Posts.search刷新为真实的东西,情况就不会如此。相反,您有时会得到@posts = []
或@posts = nil
(取决于您所追求的内容),这将是它自己的问题。从长远来看,我认为你必须有类似于
respond_to do |format|
format.html { @post.present? ? redirect_to(@post) : render(:index) }
end
另外,不确定Ryan Bates是如何完成的,但我总是觉得有一个基于ActiveModel的搜索模型的价值。如果它保持简单,不要担心它,但如果搜索开始变成它自己的野兽,那么将它放在你的技巧中是很好的,例如。特殊验证,多模型搜索等。
答案 1 :(得分:0)
实施的唯一方法是检查params [:search]。如果你刚去/发布
,这将是零 respond_to do |format|
format.html { redirect_to @post if !params[:search].nil? }
end