使用POST匹配表单的简单路由

时间:2013-10-03 19:41:16

标签: ruby-on-rails ruby ruby-on-rails-3

这里的Ruby新手。 我一直得到:没有路线匹配{:controller =>“home”,:action =>“search”} 我在索引视图中有一个简单的表单:

<%= form_tag(search_path) do %>

    <%= text_field(:search, nil, :placeholder => "yada yada") %>

    <%= submit_tag("Search") %>

<% end %>

我有这些路线:

   root to: "home#index"
   match 'search/:term', to: 'home#search', as: :search, via: [:post]

控制器:home_controller.rb

class HomeController < ApplicationController

  def index
  end

  def search
    render 'index'
  end
end

我想我的溃败在我尝试匹配'search /:term'时出现问题,但我无法弄清楚是什么。

1 个答案:

答案 0 :(得分:0)

您的路线定义规定您必须将“字词”作为网址的一部分,即:

http://example.com/search/some+term

您的表单正在发布到/搜索补丁 - 但未提供“术语”

使术语成为可选

match 'search(/:term)', to: 'home#search', as: :search, via: [:post]

或将它们全部删除(您没有在表单中引用它)

match 'search', to: 'home#search', as: :search, via: [:post]

你的问题应该消失。