Tag: rails routing

如何在不在rails中创建路由的情况下将操作链接到按钮?

我在我的Rails应用程序中有一个投票按钮,并允许用户投票我创建了一个连接按钮和相应操作的路线。 路线: /posts/1/vote_up 但是在其他ROR网站上,我一直在分析他们可以在不创建路线的情况下完成同样的事情(或者至少在没有向公众用户展示的情况下)。 一个例子是Producthunt ,有一个投票按钮,但当你将鼠标hover在它上面时,没有路由或URL映射到它。 怎么做到这一点? 我可以将操作链接到按钮而不创建路径吗?

rails路由:id无效

我有一个名为Schedule的模型属于一个项目。 一个项目有一个时间表。 我试图遵循CRUD惯例,但有一些困难。 我有一个列出所有项目的页面,并在每个项目旁边都有一个链接来创建计划。 我在路径文件中开始使用以下内容: resources :schedules 这是问题所在。 在“新计划”页面的url中,需要有一个:id,指的是计划所属的项目,当创建计划时,它将属于正确的项目。 我不知道如何用资源做到这一点,所以我将路由代码更改为: match ‘schedules/new/:id’, to: ‘schedules#new’, as: :new_schedule, via: [:get, :post] resources :schedules, except: [:new, :create] 出于某种原因,此页面为空白。 它只是白色的。 如何修复路线? 谢谢。 更新: 我也尝试将我的路线更改为以下内容: resources :projects do resources :schedules end 这使得新计划的URLforms为: /projects/:project_id/schedules/new(.:format) 我认为这是应该如何完成的,但是,新计划的表格是写成的 form_for @schedule 并产生以下错误: undefined method `schedules_path’ 有任何想法吗?

Ruby on Rails:我可以将请求直接路由到视图吗?

我有一个管理部分,其中包含controllers目录的子目录。 即,目录app/controllers/admin/包含一组文件,每个文件包含用于处理管理部分的单独部分的控制器。 现在,我想创建一个非常简单的“管理主页”,只是说“欢迎来到管理部分”,但我想避免为此目的创建一个完整的控制器,或者放置“action”方法这个视图在其他一些任意控制器中。 所以,问题是,有没有办法将”直接路由到视图” – 直接路由到HTML文件? (并且,我不希望从请求的路径(例如/some-file.html路由到HTML文件;我需要从/admin/这样的路径路由。) 在这里提出这个问题几乎不值得创建一个存根控制器所需的时间,但我相信我将来会再次有这样的需求。

rails app中静态页面的最佳实践

我正在开发一个用于本地业务的ruby on rails应用程序。 页面是“静态的”,但可以通过我为他们构建的后端CMS进行更改。 是否有为静态页面创建控制器的最佳实践? 现在我有一个包含所有静态路由的站点控制器,就像这样。 的routes.rb get “site/home” get “site/about_us” get “site/faq” get “site/discounts” get “site/services” get “site/contact_us” get “site/admin” get “site/posts” 或者我会更好地为这样的站点控制器创建成员路由,而不是因为“站点”不需要CRUD。 resources :sites, :except => [:index, :new, :create, :update, :destroy] member do get :home get :about_us get :faq get :discounts get :services get :contact_us get :admin get :posts end 或者有最佳实践/更好的方法吗? 任何答案将不胜感激。 谢谢

没有Id:Rails 4自定义控制器动作,找不到

我正在尝试为某些数据创建一个JSON提要,以便将其部署到我所拥有的图形中。 我一直遇到“找不到没有Id的大坝”,而且没有任何关于SO的答案似乎都有解决方法。 我的参数似乎正在通过罚款,我有点困惑。 的routes.rb require “resque/server” Rails.application.routes.draw do mount Resque::Server, :at => “/resque” root ‘home#index’ get ‘about’, to: ‘home#about’ resources :dams, only: [:index, :show] do get ‘count_data’, to: ‘dams#count_data’ resources :fish_counts, only: [:index, :show] end resources :fish end dams_controller.rb中的自定义操作: def count_data @dam = Dam.includes(:fish_counts, :fish).friendly.find(params[:id]) @fish_counts = FishCount.for_year(Date.today.year).where(“dam_id =?”, @dam.id).limit(200).order(count_date: :desc) respond_to do |format| format.json […]

路由会话#destroy action

我正在链接到Sessions控制器的destroy动作,如下所示: routes.rb中: resources :sessions, only: [:new, :create, :destroy] Rails抱怨上面的链接: 没有路由匹配{:action =>“destroy”,:controller =>“sessions”}缺少必需的密钥:[:id] 当没有对象ID提供链接时,如何链接到destroy操作并在Rails中保留REST /资源方法?

Rails Routes – 斜杠字符与哈希字符

在URL和rails路由中,使用斜杠字符与井号(井号)字符有什么区别? 这些工作 get “/static_pages/about” get ‘about’, to: ‘static_pages#about’, as: :about 这些没有 get “/static_pages#about” get ‘about’, to: ‘static_pages/about’, as: :about get ‘about’, to: ‘/static_pages#about’, as: :about 什么代码控制这种行为,背后的深层原因是什么? 回答: (这两个人回答得非常好,我很难选择哪一个标记为接受的答案。我希望以一种可能有助于人们的不同方式表明我对答案的理解。) 使用/符号后,字符串将被识别为附加到基本URL的URL字符串。 所以’#’字符将被解释为url的一部分,而url不喜欢使用’#’字符。 在不使用/字符的情况下,第一个单词以某种方式被识别为控制器名称,您可以使用“#”和操作名称进行跟进。

路由错误 – 没有路由匹配“/ posts / new”

我正在浏览rubyonrails.org的“博客教程”,当我尝试提交“post”时出现此错误:路由错误 – 没有路由匹配[POST]“/ posts / new” 我将教程中的代码复制并粘贴到我的代码中。 这应该返回一个带有文章和post标题的哈希值,但是我得到了上面的错误。 这是我的观点: 这是我的控制器: class PostsController < ApplicationController def new end def create render text: params[:post].inspect end end 这是我的routes.rb: Blog::Application.routes.draw do resources :posts end rake路线给出了: posts GET /posts(.:format) posts#index POST /posts(.:format) posts#create new_post GET /posts/new(.:format) posts#new edit_post GET /posts/:id/edit(.:format) posts#edit post GET /posts/:id(.:format) posts#show PUT /posts/:id(.:format) posts#update DELETE /posts/:id(.:format) […]

在Heroku上使用多部分表单路由问题

这是一个非常奇怪的问题,不幸的是我无法提供大量的信息,因为我甚至不知道从哪里开始诊断问题。 我希望有人听到神奇地知道该怎么做,我很乐意在必要时澄清。 出于某种原因,无论何时我使用Chrome在Heroku上提交带有文件附件的新的多部分表单,我都会在提交默认的“索引”操作时发送 – 也就是说,如果我提交了我将被发送到的页面一个GET而不是一个POST。 我在Rails中使用标准的RESTful路由,所以我在routes.rb中有以下内容: resources :documents do member do get :download, :follow end end 我的表格很标准: { :multipart => true } do |f| %> 但同样,这被视为GET而不是POST请求,因此我只是被重定向到/ documents。 即使我在表单定义中手动指定:method => :post也是如此。 真正非常奇怪的是,这只发生在Heroku上,只发生在Chrome上。 表单在我的本地开发版本上使用Chrome或在Heroku上使用Safari正常工作。 代码中的任何地方都没有重定向,当我检查Heroku日志时,它只报告对/ documents的GET,而不是后续处理的POST可以解释这一点。 任何帮助将不胜感激。 我真的不知道从哪里开始尝试解决这个问题。 更新:我使用的是Chrome for Mac,版本12.0.742.53 beta。 这是表单输出。 …. …. 这些路线似乎没有什么不妥,包括以下内容: POST /documents(.:format) {:action=>”create”, :controller=>”documents”}

Rails路由:将root定义为命名空间

我有2个控制器: app/ /controllers posts_controllers.rb /mobile posts_controllers.rb 和我的routes.rb看起来像这样: root :to => “posts#index” resources :posts namespace :mobile do root :to => “posts#index” resources :posts end 但是当我访问/mobile ,它无论如何渲染第一个控制器的索引页面,也试过这个: namespace :mobile do root :to => “mobile/posts#index” resources :posts end 但是它给了我错误: uninitialized constant Mobile::Mobile我想渲染第二个控制器的索引页面,我该怎么做? 编辑 通过输入/ mobile我想渲染位于此处的文件: app/ views/ /mobile /posts index.html.erb 但它在这里是rending文件: app/ views/ /posts index.html.erb