这里的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'时出现问题,但我无法弄清楚是什么。
答案 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]
你的问题应该消失。