新手问题 Rails 中的搜索表单怎么做

zealinux · 2012年08月25日 · 最后由 zealinux 回复于 2012年08月28日 · 2987 次阅读

问题是这样的: home/index.html中放form, 搜索结果在 posts/? (name LIKE %xx%),比划一下。

主页搜索,点击 submit 后, 控制出去的路由,到 posts 中进行 find

程序结构该怎么做。

<home/index.html.erb>
# 此处省略<%标签
form_for :posts, :url => posts_path do |f|
  f.label "请输入名字"
  f.text_field :name
  f.submit :name=>nil
end
<post_contrller>
def index
  if params[:name]?
    find(:all, :condition => ['name LIKE "#{params[:name]}" '])
  else
    find(:all)
  end
end

默认路由器需要改变, 需要有 home model? 另外 form_for 指定的 route 不大对

form_for 默认是 post 方法,所以对应的是'post_controller#create'的路由。 你可以新建个 create 方法,也可以在 form_for 后面加上:method => 'get'来把路由指向到 index 方法

form_for :posts, :url => posts_path, :method => :get do |f|
  f.label "请输入名字"
  f.text_field :name
  f.submit :name=>nil
end

@huacnlee 提示没有:name 这个 method

需要 登录 后方可回复, 如果你还没有账号请 注册新账号