Tag: 路由

Rails动态错误页面(404,422,500)显示为空白

我正在将动态错误页面实现到应用程序中,并且感觉它正在public文件夹中查找(现在不存在的)模板,而不是遵循我设置的路由。 在config/application.rb我添加了一行config.exceptions_app = self.routes来解释这一点。 我已经将以下内容添加到我的路线中: get “/not-found”, :to => “errors#not_found” get “/unacceptable”, :to => “errors#unacceptable” get “/internal-error”, :to => “errors#internal_error” 而错误控制器看起来像这样: class ErrorsController 404 end def unacceptable render :status => 422 end def internal_error render :status => 500 end end 转到/not-found显示模板应该是,但访问任何不存在的URL(即/ i-dont-exist)呈现空页面。 我能看到的唯一原因是exception处理需要路由,例如, get “/404”, :to => “errors#not_found” ,但具有讽刺意味的是,它没有找到/的路由404(不,这不仅仅是它的工作:))。 任何建议,非常感谢。 谢谢,史蒂夫。

默认值:Rails资源路由的排除选项

一个小问题: 我正在使用Rails作为我的REST API,但由于它是一个RESTful API我不需要:new或:edit我的任何资源的路由,因为人们只会通过自动JSON请求完全与这个API交互,而不是图形化。 例如,不需要专用的编辑页面。 目前,我需要为每个定义的资源执行类似的操作: # routes.rb resources :people, except: [:new, :edit] :except /config/routes.rb每个资源上的选项:except它没有什么大不了的,但有没有办法定义默认值,所以我不必在每个资源上都指定这个? 我想稍微干掉这段代码,不要做任何蹩脚的事情,比如在任何地方传递默认选项的局部变量。 更一般地说,您可以设置Rails路由的默认选项,除了:exclude ? 谢谢!

Rails 4 – 资源id路由的显式模型名称

在routes.rb定义以下路由时: resources :streams Rails生成以下URL: streams GET /streams(.:format) POST /streams(.:format) new_stream GET /streams/new(.:format) edit_stream GET /streams/:id/edit(.:format) stream GET /streams/:id(.:format) PATCH /streams/:id(.:format) PUT /streams/:id(.:format) DELETE /streams/:id(.:format) 我想有一个显式的资源ID,即:stream_id而不是:id 。 编辑: 对于简单的资源,解决方案就像@ user2262149和@vimsha一样: resources :streams, :param => :stream_id 问题在于嵌套资源。 如果我这样做: resources :streams do resource :comment, :param => :comment_id end 我会得到这条路线(没关系): stream_comments GET streams/:stream_id/comments(.:format) 但另一方面,对于父资源(同样, :id而不是:stream_id ): streams GET streams/:id(.:format) […]

你如何使用ActionDispatch :: Routing :: RouteSet recogn_path?

你如何使用ActionDispatch :: Routing :: RouteSet recogn_path? 我想获取视图的当前路径。 我尝试了<div id="”>但是获得了ActionDispatch :: Routing :: RouteSet:Class的“未定义方法`recogn_path’”。 谢谢!

Rails 3.0中的奇怪路由错误

我一直在将我的Rails 2.3.9应用程序转换为Rails 3.0,一切都进展顺利。 我用新系统创建了很多路线,所以我觉得我知道怎么做。 但是,我最近得到了一个我无法解决的路由错误。 我有一个像这样定义的用户资源: resources :users do member do get ‘activate’ get ‘edit_password’ post ‘update_password’ end collection do get ‘forgot_password’ post ‘send_reset_instructions’ end end 失败的路由是update_password。 如果我将其更改为get方法,则可以正常工作。 但不是用作post时,数据来自“edit_password”中的表单。 这是错误消息: Routing Error No route matches “/users/31/update_password” 这是rake路线的(相关)输出: activate_user GET /users/:id/activate(.:format) {:action=>”activate”, :controller=>”users”} edit_password_user GET /users/:id/edit_password(.:format) {:action=>”edit_password”, :controller=>”users”} update_password_user POST /users/:id/update_password(.:format) {:action=>”update_password”, :controller=>”users”} forgot_password_users GET /users/forgot_password(.:format) […]

尽管路由已声明,但使用Rails 5(API标志)并且不会出现路由错误

这是我的控制器: class Api::V1::UsersController < ApplicationController respond_to :json def show respond_with User.find(params[:id]) end end 这是我的routes.rb require ‘api_constraints’ Rails.application.routes.draw do devise_for :users # Api definition namespace :api, defaults: { format: :json }, constraints: { subdomain: ‘api’ }, path: ‘/’ do scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do resources :users, :only => [:show] end end end […]

Rails没有路由与嵌套资源匹配

我知道这个问题在Rails中出现了很多,但我似乎无法获得任何以前的答案。 MyApplication::Application.routes.draw do resources :matters do resources :issues end 我收到以下路由错误: No route matches {:action=>”show”, :controller=>”issues”, :matter_id=>#, :id=>nil} 我想尝试这样的道路: 当我运行rake路线时,它显示我有路径: matter_issues GET /matters/:matter_id/issues(.:format) {:action=>”index”, :controller=>”issues”} 任何想法为什么我收到此错误? 谢谢!

如何在Rails中将多个参数传递给嵌套路径路径?

我是Rails的新手,通常为正常的unnested路由设置一个link_to帮助器,如下所示: link_to “Delete”, article_path(article.id), method: :delete, data: {confirm: “Are you sure?”} 但是我正在学习嵌套路由,似乎我需要提供带有两个参数的路径,例如: link_to “(Delete)”, article_comments_path(comment.article_id, comment.id), method: :delete, data:{comfirm: ‘Are you sure?’} 然而,这似乎不起作用。 我已经看到你可以像这样格式化link_to : link_to ‘Destroy Comment’, [comment.article, comment], method: :delete, data: { confirm: ‘Are you sure?’ } 但这似乎让我感到困惑,因为没有定义路径,路径所需的值也没有直接指定。 是否可以格式化嵌套的link_to路径,如上面的unnested路径,还是需要格式化,如第三个例子所示? 如果是这样,有人可以尝试解释如何将此数组格式转换为Rails执行的URL? 谢谢 路线: article_comment_path – DELETE – /articles/:article_id/comments/:id(.:format) – 评论#stroy

I18n在EmberJS(路由和一般)

EmberJS是否支持国际化应用程序的翻译路线? 或者它是否至少可以轻松扩展它以支持i18n路线? 有经验的人吗? 例如,路由字符串可以以某种方式从区域设置文件动态设置吗? 使用Ember和Rails路由也不会被指定两次就好了……是这样吗? 我是Ember的新手(目前正在评估js框架),但我一般认为Rails只能在Rails中指定非常基本的路由,其余的在Ember中? 那么重复不会太多? 想知道来自Rails的语言环境文件是否可用于查找路由转换。 作为一个更普遍的问题:Ember是否已经支持I18n?

Rails创建操作在应该呈现新操作时重定向到索引

如果我提交有错误的新用户表单,它会重定向到索引页面,然后在其上呈现新页面。 在控制器中,我指定它应该只呈现新操作,以便用户可以查看/修复他们的错误并重新提交。 有什么明显的东西让我失踪吗? 这是我的控制器代码中的创建操作: def create @user = User.new(params[:user]) @user.role = “owner” if @user.save flash[:notice] = “Registration successful!” else flash.now[:notice] = “You have errors!” render :new end end