我有一个new_words
控制器,现在我想进行'搜索'操作。
我希望Rails在导航到此链接new_words/search/"search_word_here"
在我的路线中,我得到了这个:
resources :new_words do
collection do
get 'search/:word', action: :search, as: 'search'
end
end
在视图中,我有一个get
方法的表单。
<%= form_tag search_new_words_path, method: :get, remote: true do %>
<%= text_field_tag :word %>
<%= submit_tag 'Search' %>
<% end %>
但我只收到这个错误:
感谢您的帮助:)
答案 0 :(得分:0)
由于您在路由:word
中有get 'search/:word'
作为关键字,因此Rails希望您提供该值以构建网址:
search_new_words_path("test")
#=> "/new_words/search/test"
但是,在您的问题中,您希望表单会提供:word
,这意味着您应该使用表单参数,而不是路由中的关键字:
<强>路由强>:
resources :new_words do
collection do
get 'search', action: :search, as: 'search'
end
end
查看:强>
<%= form_tag search_new_words_path, method: :get, remote: true do %>
<%= text_field_tag :word %>
<%= submit_tag 'Search' %>
<% end %>
然后在您的控制器中,您可以使用params
方法获取搜索词:
def search
params[:word] # will return the search word
end