假设路线
map.resources :articles
你怎么得到这个
/articles?most_popular
使用link_to
方法?
尝试了以下内容:
link_to articles_path(:most_popular) # exception
link_to articles_path(:most_popular => nil) # /articles
link_to articles_path(:most_popular => true) # /articles?most_popular=true
注意:我正在使用inherited_resources与has_scope
答案 0 :(得分:3)
如果您没有为参数添加值,则不会遵守W3C标准,该标准要求params部分的格式为field=value
。
我建议您在文章控制器中添加一个新的:most_popular操作。
在您的routes.rb上:
map.resources :articles, :collection => {:most_popular=>:get}
在您的控制器上:
class ArticlesController < ApplicationController
...
def most_popular
@articles = ...
end
关于你的观点:
link_to most_popular_articles_path() # /articles/most_popular
这将符合HTML标准,您的网址看起来几乎相同(更改一个?一个/),您的控制器将被简化(您将从索引中分离出最常用的操作)。
问候!
更新(2017):似乎W3C标准没有强制要求field=value
语法(或者不再强制要求它)。但是,有些服务器会记录在不符合此语法的查询上“阻塞”。有关详细信息,请参阅Is a url query parameter valid if it has no value?。
答案 1 :(得分:1)
你拥有的最后一个例子:
link_to articles_path(:most_popular => true) # /articles?most_popular=true
是正确的方法。否则你可以手工构建链接:
<a href="<%= articles_path %>?most_popular">articles</a>
答案 2 :(得分:0)
请参见https://stackoverflow.com/a/4557763/803804
该规范不强制使用os.environ["PYSPARK_SUBMIT_ARGS"] = "--packages <kafka>"
sc = get_context()
格式,实际上?key=value
很好。
此外,Rails(和大多数框架)将处理它。
在Rails中,它将把它转换成看起来像?key
不幸的是,将值为nil的参数传递到rails url帮助器中将导致该参数未添加到查询字符串中,因此我发现做到这一点的唯一方法是{ 'key' => nil }