Я использую Rails 3 и ruby 1.9
Я пытаюсь создать настраиваемый URL для ресурса, который я называю BasicQuery , но я думаю, что мои маршруты.Файл rb записан неправильно.Подробности ниже.
Ради простоты BasicQuery поставляется в двух вариантах (a или b)
Я бы хотел настроить URL для BasicQuery двумя способами:
- Я бы хотел, чтобы URL указывал, какой "вкус" базового запроса запрашивается (a или b)
- Контроллер для BasicQuery называется basic_queries_controller, но я бы хотел, чтобы URL был болееинтуитивно понятный (по крайней мере, для меня), и я хотел бы, чтобы часть URL-адреса «префикс» была «basic_query» вместо «basic_queries»
Итак, если я собираюсь создать новыйBasicQuery для аромата "a", мой URL-адрес get будет:
http://localhost:3000/basic_query/a
Если я собираюсь создать новый BasicQuery для аромата "b", мой URL-адрес get будет:
http://localhost:3000/basic_query/b
Запись файла
my rout.rb выглядит следующим образом:
get "basic_query/:flavor" => "basic_queries#new"
Файл my basic_queries_controller.rb выглядит следующим образом:
def new
@basic_query = BasicQuery.new(flavor: params[:flavor])
end
my view (new.html.haml) выглядит следующим образом:
= form_for(@basic_query) do |f|
.field
= f.label :search_term
%br
= f.text_field :search_term
%br
= f.hidden_field :flavor
.actions
= f.submit
Однако, когда я запрашиваю следующий URL: http://localhost:3000/a,, я получаю следующую ошибку:
undefined method `basic_queries_path' for #<#<Class:0x0000010294f068>:0x0000010290eb58>
= form_for(@basic_query) do |f| # <= this is the problematic line!
.field
= f.label :search_term
%br
Итак, я предполагаю, что мой файл rout.rb неправильно определяет basic_queries_path , но я не уверен, как это сделать.
Мысли?
Спасибо!