Tag: url for

将Rails 3.0升级到3.1时,路由停止工作

我使用Ruby 1.8.7与Rails 3.1。 我的应用程序在Rails 3.0中运行良好,但是当我把它提升到Rails 3.1.4时,我所有的url帮助程序都破了! 在过去两天谷歌搜索疯子之后,我已经放弃了,现在是时候寻求帮助了。 我不相信问题是我的routes.rb文件,但在视图/帮助方面更多。 我的routes.rb中有以下内容: resources :sessions 在我的主页视图中,我有以下link_to,其中出错: 当我做rake路由时,我得到以下输出,所以路径存在: sessions GET /sessions(.:format) {:controller=>”sessions”, :action=>”index”} POST /sessions(.:format) {:controller=>”sessions”, :action=>”create”} new_session GET /sessions/new(.:format) {:controller=>”sessions”, :action=>”new”} edit_session GET /sessions/:id/edit(.:format) {:controller=>”sessions”, :action=>”edit”} session GET /sessions/:id(.:format) {:controller=>”sessions”, :action=>”show”} PUT /sessions/:id(.:format) {:controller=>”sessions”, :action=>”update”} DELETE /sessions/:id(.:format) {:controller=>”sessions”, :action=>”destroy”} 当我在浏览器中转到/ sessions / new时,页面再次加载,路由存在,但它在基于_path的url上出错: :post do -%> 我得到的错误如下: ActionView::Template::Error (undefined […]

如何在Rails link_to中生成自定义排序查询字符串URL?

当我在Rails 3.0.7应用程序中使用带有许多参数的link_to helper时,它会生成一个按字典顺序排序的URL,如在ActiveSupport文档中的Hash的to_param方法中所提到的那样。 例如 link_to “my Link”, {:u=>”user”, :q=>”some query”, :page=>”4″} 生成 “/search?page=4&q=some+query&u=user” 但我想要的是 “/search?u=user&q=some+query&page=4” 任何人都能够在params hash中提供自定义排序到link_to或url_for? 除非我遗漏了某些内容,否则这似乎与link_to文档中给出的示例相矛盾( ri link_to或文件/gems/actionpack-3.0.7/lib/action_view/helpers/url_helper.rb:215 # link_to “Nonsense search”, searches_path(:foo => “bar”, :baz => “quux”) # # => Nonsense search 当然,我可以做手动URL创建 link_to “my Link”, “/search?u=#{user}&q=#{query}&page=#{page}” 但是那会错过’Rails方式’并且在逃避某些字符时会有一些问题,所以这将是最后一个选项。

接受用于填充`url_for`方法的URL参数是否安全?

我正在使用Ruby on Rails 4.1.1,我想接受直接传递给url_for方法的参数(通过URL查询字符串),这样: # URL in the browser http://www.myapp.com?redirect_to[controller]=users&redirect_to[action]=show&redirect_to[id]=1 # Controller … redirect_to url_for(params[:redirect_to].merge(:only_path => true)) 采用上述方法,可以在执行操作后重定向用户。 但是,我认为人们可以输入可能导致安全问题的任意params … 接受用于填充url_for方法的URL参数是否安全? 什么是陷阱? 在最坏的情况下会发生什么? 通过在对我的应用程序的请求期间记录params ,我注意到Rails 总是添加:controller和action参数。 也许确认url_for可以使用上面的方式,因为它在内部受到保护并且像Rails一样工作。

rails获取app root / base url

在我的应用程序中,我有一些API在api域下。 现在在其中一个API中,我想生成一个指向主域的URL,比方说 test.com/blabla… 我试图使用url_for,但似乎默认的root_url或request.host在api域中。 Url_for将成为现实 api.test.com/blabla.. 虽然我想要它 test.com/blabla… Url_for可以带参数 host: … 将它设置为test.com/,问题是如何获取主机的root / base url(test.com)? root_url或request.host都是api.test.com。 有任何想法吗? 谢谢。

使用url_for查询参数?

url_for([:edit, @post]) 正在工作和生成/comments/123/edit 。 现在我需要添加一个查询参数,以便代替 /comments/123/edit 它是 /comments/123/edit?qp=asdf 我试过url_for([:edit, @post], :qp => “asdf”)但是没有去。

Rails url_for和命名空间模型

在Rails中,是否可以在模块中命名模型并仍然从url_for获得正确的行为? 例如,在这里, url_for按预期工作: # app/models/user.rb class User < ActiveRecord::Base end # config/routes.rb resources :users # app/views/users/index.html.haml = url_for(@user) # /users/1 将User模型放入模块后, url_for抱怨未定义的方法m_user_path : # app/models/m/user.rb module M class User < ActiveRecord::Base end end # config/routes.rb resources :users # app/views/users/index.html.haml = url_for(@user) # undefined method 'm_users_path' 是否可以让url_for忽略M::User的模块并返回url_for(@user)而不是m_user_path ? UPDATE 因此,经过近5年的时间,这是解决方案,感谢esad。 这已在Rails 4.2中测试过。 # app/models/m/user.rb module M […]