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