0

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',但我不知道是什么。

4

1 回答 1

0

您的路由定义声明您必须有一个“术语”作为 URL 的一部分,即:

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

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

使术语可选

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

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

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

你的问题应该会消失。

于 2013-10-03T19:59:45.007 回答