Ruby on rails 自定义routes.rb文件中的get URL会给出未定义的方法{symbol}\u路径

Ruby on rails 自定义routes.rb文件中的get URL会给出未定义的方法{symbol}\u路径,ruby-on-rails,ruby,routing,ruby-on-rails-3,Ruby On Rails,Ruby,Routing,Ruby On Rails 3,我正在使用Rails3和Ruby1.9 我正在尝试为我称之为BasicQuery的资源创建自定义URL,但我认为我的routes.rb文件编写不正确。详情如下 为了简单起见,BasicQuery有两种口味(a或b) 我想通过两种方式自定义BasicQuery的URL: 我希望URL能够指示所请求的基本查询的“风格”(a或b) BasicQuery的控制器称为basic\u querys\u controller,但我希望URL更直观(至少对我来说),并且我希望URL的“前缀”部分是“basic

我正在使用Rails3和Ruby1.9

我正在尝试为我称之为BasicQuery的资源创建自定义URL,但我认为我的routes.rb文件编写不正确。详情如下

为了简单起见,BasicQuery有两种口味(a或b)

我想通过两种方式自定义BasicQuery的URL:

  • 我希望URL能够指示所请求的基本查询的“风格”(a或b)
  • BasicQuery的控制器称为basic\u querys\u controller,但我希望URL更直观(至少对我来说),并且我希望URL的“前缀”部分是“basic\u query”,而不是“basic\u querys”
因此,如果我要创建一个新的口味“a”的BasicQuery,我的get URL将是:

http://localhost:3000/basic_query/a
http://localhost:3000/basic_query/b
如果我要创建一个新的口味“b”的基本查询,我的get URL将是:

http://localhost:3000/basic_query/a
http://localhost:3000/basic_query/b
我的routes.rb文件条目如下所示:

get "basic_query/:flavor" => "basic_queries#new"
  def new
    @basic_query = BasicQuery.new(flavor: params[:flavor])
  end
= 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
我的基本\u querys\u controller.rb文件如下所示:

get "basic_query/:flavor" => "basic_queries#new"
  def new
    @basic_query = BasicQuery.new(flavor: params[:flavor])
  end
= 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
我的视图(new.html.haml)如下所示:

get "basic_query/:flavor" => "basic_queries#new"
  def new
    @basic_query = BasicQuery.new(flavor: params[:flavor])
  end
= 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:,我得到以下错误:

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
未定义的方法“基本查询路径”#

=form_for(@basic_query)do | f |#要使用form_for,您需要定义一个“POST”方法,表单可以提交给该方法,此时您只需要设置一个GET来返回您将填写的表单

在routes.rb文件中,您需要执行以下操作:

get "basic_query/:flavor" => "basic_queries#new"
  def new
    @basic_query = BasicQuery.new(flavor: params[:flavor])
  end
= 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
post”/basic\u query“,:as=>“basic\u querys”

match”/basic_query“,:to=>“basic_querys#create”,:via=>:post,:as=>“basic_querys”


应该可以了。

你能发布你的
路线吗。rb