Настройка URL-адреса get в файле rout.rb дает неопределенный метод {symbol} _path - PullRequest
0 голосов
/ 28 декабря 2010

Я использую 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 , но я не уверен, как это сделать.

Мысли?

Спасибо!

1 Ответ

2 голосов
/ 28 декабря 2010

Чтобы использовать form_for, вам нужно определить метод "POST", который форма может отправить, в то время как вы только настраиваете GET для возврата формы, которую вы затем заполните.

В вашем файле rout.rb вам нужно сделать что-то вроде этого:

post "/basic_query", :as => "basic_queries"

или

match "/basic_query", :to => "basic_queries#create", :via => :post, :as => "basic_queries"

Это должно сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...