Tag: 路由

RESTful路由中的控制器名称是否可选?

使用标准的map.resource路由机制和几个嵌套资源,生成的路由不必要地长。 请考虑以下路线: site.org/users/pavelshved/blogs/blogging-horror/posts/12345 在routes.rb创建很容易,我确信它遵循某种有益的路由逻辑。 但它太长了,似乎也不是人类可读的。 一个很好的改进是删除控制器名称,所以它看起来像: site.org/pavelshved/blogging-horror/12345 清晰,简单,简短。 它可能变得模棱两可,但在我的情况下,我不会为任何用户“用户”命名。 我尝试设置:as => ” ,但它产生这样的路由: site.org//pavelshved//blogging-horror//12345由标准助手生成它们。 有没有办法以这种方式映射资源,控制器名称是否可选?

添加自定义路由到Rails应用程序

我已经阅读了Rails指南 。 我想要设置的是以下路由到路由到’profiles’控制器: GET profiles/charities – 应显示所有慈善机构 GET profiles/charties/:id应该显示一个特定的慈善机构 GET profiles/donors – 应显示所有捐赠者 GET profiles/donors/:id – 应该显示一个特定的捐赠者 我创建了配置文件控制器和两种方法:慈善机构和捐赠者。 这就是我需要的吗?

在Rails 3中创建SEO友好URL

我目前的url如下: things?category_id=6&country_id=17 我希望url看起来像这样: /printer_cartridges/united_kingdom 在Rails 3中是否有一种方法,没有对路由器中的所有类别和国家进行硬编码以获得我想要的URL,可能使用find_by_name或类似的? 解决这个问题的最佳方法是什么?

可安装的发动机安装在哪条路径上

我需要知道,从可安装引擎的布局内部,它当前正在安装的路径。 怎么办呢? 例如我的routes.rb包含以下行: mount BackendCore::Engine => “/backend” 从BackendCore内部,我需要访问“/ backend”的值。

如何限制Rails路由文件中的资源格式

在Rails中路由资源时,可选的format属性会自动附加到生成的路由中。 这样可以将所讨论的资源请求为XML,HTML等。实际允许的格式通常在控制器中使用respond_to来描述。 但在许多情况下,您只想支持HTML,并且在每个控制器的每个操作中编写respond_to :html感觉都是一种开销。 因此,如果在routes.rb文件中构建路由时已经有限制允许内容类型的方法,那将是很酷的,例如 map.resources :users, :formats => :html map.resources :users, :formats => [:html, :xml] map.resources :users, :formats => {:index => :html, :show => [:html, :xml]} 有没有办法实现本机或通过插件? PS解决此问题的常用方法是忽略该问题,并且不要在操作中使用respond_to 。 但这实际上并不限制允许的内容类型。 相反,它只是期望视图目录中存在每种可能的内容类型的模板。 如果在请求时不存在,系统将抛出HTTP 500错误。

使用单个标识符RESTful嵌套资源路由

在我的Rails应用程序中,我在两个实体之间有一个相当标准的has_many关系。 Foo有零个或多个Bars ; 一个Bar恰好属于一个Foo 。 Foo和Bar都由单个整数ID值标识。 这些值在所有各自的实例中都是唯一的。 Bar的存在依赖于Foo:拥有没有Foo的Bar是没有意义的。 有两种方法可以RESTful地引用这些类的实例。 给定Foo.id为“100”且Bar.id为“200”: 通过他们自己的“顶级”URL路由引用每个Foo和Bar,如下所示: /富/ 100 /棒/ 200 参考栏通过其Foo实例作为嵌套资源: /富/ 100 /富/ 100 /酒吧/ 200 我喜欢#2中的嵌套路由,因为它更接近地表示实体之间的实际依赖关系。 然而,它似乎涉及很多额外的工作,收益很少。 假设我知道一个特定的酒吧,我不需要被告知特定的Foo; 我可以从Bar本身那里得到它。 事实上,我可能应该在任何地方validation路由Foo(这样你就不能做/ foo / 150 / bar / 200,假设Bar 200没有分配给Foo 150)。 最终,我看不出这给我带来了什么。 那么,是否有任何其他论据支持或反对这两种路由方案? 澄清点 我主要关注特定Bars的RESTful更新/显示/删除。 为了获得特定Foo的Bar列表(通常是Rails中的“索引”动作),有一个嵌套路由,如/ foo / 100 / bar,这是完全合理的。 这条路线上的页面可以很容易地链接到/ bar / x和/ foo / 100 / bar […]

Rails:将子域路由到资源

是否可以将子域映射到资源? 我有一个公司模特。 目前,使用subdomain_fu,我的路由文件包含: map.company_root ”, :controller => ‘companies’, :action => ‘show’, :conditions => { :subdomain => /.+/ } 我的公司模型包含“子域”列。 虽然这是按预期工作的,但它是一条命名路线,并不安宁。 基本上,我需要将“name.domain.com”映射到公司控制器的show动作。 命名路由是可行的,还是可以使用资源路由?

Rails:我无法在重定向中传递validation错误

所以这是一个简单的项目,有产品,你可以出价。 想想eBay。 我按如下方式构建了项目: $ rails new routetest $ rails g scaffold product productname reserveprice:integer $ rails g scaffold bid bidprice:integer product_id 在我所包含的每个产品的“展示”视图中 产品详情(由脚手架产生) 到目前为止的出价列表 使用form_for帮助程序汇总新出价的表单 Normal Products\Show Part Productname: Reserveprice: List of bids Product ID Bid Price Form For Bids Make a Bid (params[:id]) %> 点击“提交”后,将调用出价控制器#create action。 def create @bid = Bid.new(bid_params) if @bid.save redirect_to […]

在Rails 3中为OmniAuth创建命名路由

在看过Ryan优秀的Railcast Simple OmniAuth后 ,我设法在我的应用程序中实现身份validation。 一切都很好,但在我看来,我的链接看起来像这样: 我想知道是否有一种优雅的方法来创建一个命名路由来替换它: 要么: OmniAuth已经处理了那些路由……在我的routes.rb文件中,我只有回调和注销的东西: match ‘/signin/:provider/callback’ => ‘sessions#create’ match ‘/signout’ => ‘sessions#destroy’, :as => :signout 所以我不知道在哪里可以创建那些命名路线。 任何帮助将不胜感激。 谢谢。

我的Rails路由应该与pushState Ember.js路由一起使用?

简而言之… 在构建Ember.js应用程序以持久化到Rails应用程序时,我应该如何处理Rails路由/视图? 我认为我只需要Rails来呈现application.html.erb布局,以便Ember.js应用程序初始化并处理路由/视图/模板。 细节: 具体来说,如果我访问localhost:3000 ,在我的Ember.js应用程序有机会初始化之前,Rails会在项目控制器上执行“索引”操作。 它会抱怨缺少索引模板。 我没有index.html.erb视图,因为我的Ember.js应用程序有一个视图/模板。 我应该为Rails应用程序创建空白视图吗? 我的Rails控制器操作应该返回一些东西以防止它呈现视图吗? 或者我希望构建正常的Rails视图以与Ember.js应用程序视图/模板一起使用? 如果我创建一个空白项目/ index.html.erb并访问localhost:3000 ,Rails将呈现它,Ember.js将从那时开始初始化并处理路由。 但是,如果我直接访问localhost:3000 / projects / new ,Rails会抱怨项目控制器中没有新操作。 我在Rails端的项目控制器上没有“新”操作,因为我不需要它。 我的Ember.js应用正在处理该视图/模板。 最后,我只是不确定在Rails应用程序旁边使用Ember.js的约定。 感谢您的帮助,并阅读此… 编辑: 我遗漏了我试图使用Ember.js路由器使用pushState历史记录的能力的细节。 这将留下非hashbang URL。 这就是为什么我在处理Rails竞争路由我的应用程序时遇到问题的原因之一。 Rails应用程序布局: Ember.js App: @DA = Em.Application.create name: ‘Design Archive’ VERSION: ‘0.1’ rootElement: ‘#design-archive’ ApplicationController: Em.Controller.extend() ApplicationView: Em.View.extend templateName: ‘application’ DA.initialize(DA.Router) 导轨路线: DesignArchive::Application.routes.draw do resources :clients, :only […]