Tag: rails routing

为什么在Rails中安装路由会因“未初始化的常量API”而失败?

我正在开发一个包含使用grapegem的API的应用程序。 这是我的Root类: module API class Root “text/error” } ).finish end prefix “api” version ‘v1’, using: :path format :json error_format :json mount ::API::ServiceRequests end end 这是我如何在路线中安装它: mount API::Root => ‘/’ 我收到的错误是: routes.rb:45:in块中的’:uninitialized constant API(NameError)` 这些文件的结构类似于app/api/root.rb ,我在application.rb有一些代码可以加载到文件中: config.paths.add File.join(‘app’, ‘api’), glob: File.join(‘**’, ‘*.rb’) config.autoload_paths += Dir[Rails.root.join(‘app’, ‘api’, ‘*’)]

在rails中匹配routes.rb重定向次数过多

我有一条路线可以匹配这样的东西 本地主机:3000 /网站/管理员 并重定向到 本地主机:3000 / EN /网站/管理员 这是应该匹配的路线 的routes.rb match ‘*path’, to: redirect(“/#{I18n.default_locale}/%{path}”) 但不是匹配它并重定向到localhost:3000 / en / site / admin,它将infite重定向到这个 http://localhost:3000/en/en/en/en/en/en/en/en/en/en/en/en/en/site/admin (adds /en until browser complains about infite loop) 知道为什么这个infite循环正在发生吗? 谢谢 编辑 链接到我的整个routes.rb文件 https://gist.github.com/2323762

如何从主机应用程序可用的Rails 3引擎中创建路由?

我有一个Rails 3应用程序,其中包含多个包含其他function的引擎。 每个引擎都是一个单独的服务,客户可以购买访问权限。 但是,我对来自引擎的路径存在问题,这些路由不易用于控制器和视图。 控制器: class ClassroomsController < ApplicationController .. respond_to :html def index respond_with(@classrooms = @company.classrooms.all) end def new respond_with(@classroom = @company.classrooms.build) end .. end app/views/classrooms/new.html.haml : = form_for @classroom do |f| .. f.submit 引擎中的config/routes.rb : MyEngineName::Engine.routes.draw do resources :classrooms end app中的config/routes.rb : Seabed::Application.routes.draw do mount MyEngineName::Engine => ‘/engine’ … end 引擎中的lib/my_engine_name.rb : module […]

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。 有任何想法吗? 谢谢。

Rails 3 w / Devise:如何根据用户是否经过身份validation设置两个单独的主页?

我正在使用Rails 3和Devise创建一个应用程序,用户可以访问该网站并显示包含登录和注册表单的主页。 这个页面有自己的控制器(“主页”)所以它的路线是 root :to => “homepage#index” 如果用户已经登录,我想显示不同的主页。这将考虑到根点 root :to => “dashboard#index” 有没有办法在routes.rb中有一个条件路由,这可以让我在将用户路由到其中一个主页之前检查用户是否经过身份validation? 我尝试使用以下代码,但如果我没有登录,设计要求我登录,所以显然只有第一条路线有效。 authenticate :user do root :to => “dashboard#index” end root :to => “homepage#index” 此外,我希望在两种情况下都将url指向www.example.com,以便www.example.com/dashboard/index和www.example.com/homepage/index永远不会出现在浏览器中。 太感谢了 !!!

使用Friendly_Id实现/ YYYY / MM / Title-Slug URL结构

我真的希望有人可以用这个问题来帮助这个Rails n00b。 在过去的几天里,我一直在研究,尝试,崩溃(和 – 燃烧)如何为我正在整理的博客实现标准/ YYYY / MM / Title-Slug URL结构。 我已经发现并成功实现了Friendly_Id以处理缓慢(以及历史跟踪),但对于我的生活,我无法解决路由问题的年/月部分。 在我忘记之前:我正在使用Rails 4.2.3和Ruby 2.2.1p85(因为,是的,我利用了RailsTutorial.org中的一些东西):-) 为了最大限度地减少混淆(或附带损害),我已经搭建了一个超级简单的博客应用程序,试图让它全部工作: $ rails new blog […] $ cd blog # (Add friendly_id to Gemfile & install) $ rails generate friendly_id $ rails generate scaffold post title content slug:string:uniq […] $ rake db:migrate 对post.rb进行了以下更改: class Post < ActiveRecord::Base extend FriendlyId friendly_id […]

#YYYY / MM / Title-Slug URL结构,带有#new和#edit上的Friendly_Id解决方案扼流圈

我对我以前的问题有一个部分解决方案,正确显示post#index和posts#show routes,但在创建post后窒息: PostsController中的ActionController :: UrlGenerationError #create 没有路由匹配{:action =>“show”,:controller =>“posts”}缺少必需的键:[:id,:month,:year] 提取的来源(第32行): 30 respond_to do | format | 31 if @ post.save 32 format.html {redirect_to post_path,注意:’post已成功创建。’ } 33 format.json {render:show,status :: created,location:@post} 34其他 35 format.html {render:new} …并编辑post: 没有路由匹配[PATCH]“/ blog / example-post / blog / 2015/09 / example-post” 以下是所有相关文件(使用相同的非常简单的脚手架博客): $ rails new blog […] $ cd blog # […]

在Rails中路由。 URL中的点

我在我的Category模型中覆盖了to_param方法 def to_param name end 和routes.rb get ‘/:id’ => ‘categories#show’, :as => :category 当name参数不包含任何点( foobar )时,一切正常,但是当它( foobar )时,我得到一个错误No route matches [GET] 。 所以我的问题是:是否可以在路由中使用点作为参数名称的一部分? 或者我可以做些什么来实现这个目的,也许是一些钩子或什么的。 任何帮助表示赞赏。

为什么rails应用程序意外重定向而不是匹配路由?

我之前提过这个问题并认为它已修复,但事实并非如此。 先前的问题在这里 我的问题是我试图设置我的路线,以便在我输入时 本地主机:3000 /网站/管理 它应该重定向到 本地主机:3000 / EN /网站/管理 这是我的routes.rb文件 scope “:locale”, locale: /#{I18n.available_locales.join(“|”)}/ do get “log_out” => “sessions#destroy”, as: “log_out” get “log_in” => “sessions#new”, as: “log_in” resources :sites, except: [:new, :edit, :index, :show, :update, :destroy, :create] do collection do get :home get :about_us get :faq get :discounts get :services get :contact_us get :admin […]

Rails 3链接或在控制器中执行操作的按钮

在RoR 3中,我只想要一个链接/按钮来激活控制器中的某些动作/方法。 具体来说,如果我点击页面上的“update_specs”链接,它应该转到我的产品控制器中的“update_specs”方法。 我在这个网站上找到了建议: link_to “Update Specs”, :controller => :products, :action => :update_specs 但是,当我点击此链接时,我收到以下路由错误: 路由错误没有路由匹配{:action =>“update_specs”,:controller =>“products”} 我已经阅读了路由但我不明白为什么如果可以通过资源访问所有其他方法,我必须要路由此方法:产品。