Tag: 嵌套路由

如何在rails中保持CRUD和RESTFull(具体示例)

我很难保持我的控制器不会太复杂,并且我们在绞架时会创建rails创建的基本操作。 如果下面的方法是正确的,有人可以告诉我。 我有一个模型Project和那些基本路线: GET /projects -> Project#index GET /projects/new -> Project#new POST /projects -> Project#create GET /projects/:id -> Project#show GET /projects/:id/edit -> Project#edit PATCH /projects/:id -> Project#update PUT /projects/:id -> Project#update 现在我想允许用户接受该项目。 首先,他有一个摘要视图,他可以按下按钮,它应该改变模型中的某些值。 我的第一次尝试是 GET /projects/:id/accept -> Project#accept POST /projects/:id/accept -> Project#accept_update 这感觉不对劲。 所以我想知道我是否应该这样做: GET /projects/:id/accept -> Acceptations#new POST /projects/:id/accept -> Acceptations#create 但是,我的我的Acceptations控制器正在处理Project模型。 什么开始让我感到困惑。 最重要的是,如果我使用第二个选项,路径应该是/projects/:id/acceptations/new这对于最终用户来说似乎很长并且令人困惑。

Rails 3使用可选范围下的资源进行路由

我已经设置了这样的版本化API ,只需稍微调整即可实现向后兼容。 在我的路线中,我有: scope ‘(api(/:version))’, :module => :api, :version => /v\d+?/ do … scope ‘(categories/:category_id)’, :category_id => /\d+/ do … resources :sounds … end end 已达到成功的目标,让以下url到达同一个地方 /api/v1/categories/1/sounds/2 /api/categories/1/sounds/2 /categories/1/sounds/2 /sounds/2 我的目录结构是这样的: 我看到的问题在于我的观点中的链接世代。 例如,在声音节目页面上,我有一个button_to来删除声音 ‘Are you sure?’, :method => :delete %> 这会在表单action生成以下URL: “/api/sounds/1371?version=1371″ 此外, delete方法不起作用,而是作为POST发送 rake routes的有趣部分是: sounds GET (/api(/:version))(/categories/:category_id)/sounds(.:format) {:controller=>”api/sounds”, :version=>/v\d+?/, :action=>”index”, :category_id=>/\d+/} POST (/api(/:version))(/categories/:category_id)/sounds(.:format) […]

应该将哪些对象传递给具有三重嵌套路由的link_to?

我应该将哪些对象传递给我的link_to以获得三重嵌套路由? 我想要检索练习秀页面。 show.html.erb – 锻炼 的routes.rb resources :plans do resources :workouts do resources :exercises end end workouts_controller.html.erb def show @workout = Workout.find(params[:id]) end 我尝试了以下方法,但它没有将正确的ID提供给正确的型号。

Rails routes.rb语法

我搜索过并搜索过,我找不到一个页面,其中列出了Rails 3中routes.rb的语法。有指南,概述,甚至是高级示例,但为什么没有一个页面说明每个关键字的确切语法?? 这一页 http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/ 包含许多高级示例,但没有花时间讨论给出的所有示例的行为。 如果有人能指出我打破routes.rb语法的页面,我将不胜感激。 这是我试图解决的问题。 我有两个型号modelA和modelB。 关系是modelA has_many modelB和modelB belongs_to modelA。 我在modelA的命名空间下为modelB创建了控制器。 所以在我的rails app文件夹中,我有 app/controllers/modelA_controller.rb app/controllers/modelA/modelB_controller.rb 我希望我的路线是这样的: http://localhost:3000/modelA/:modelA_id/modelB/ [index] http://localhost:3000/modelA/:modelA_id/modelB/:modelB_id [show] etc. 我在routes.rb中尝试了以下操作,但没有一个工作: resources :modelA do resources :modelB end — resources :modelA do member do resources :modelB end end — namespace :modelA do resources :modelB end — match ‘/modelA/:modelA_id/modelB/action’, :to => ‘/modelA/modelB#action’ 我知道我尝试的一些事情显然是错的,但是当你花了两天时间解决一个问题时,任何事情都会发生!

如何嵌套收集路线?

我在Rails 3应用程序中使用以下路由配置。 # config/routes.rb MyApp::Application.routes.draw do resources :products do get ‘statistics’, on: :collection, controller: “statistics”, action: “index” end end StatisticController有两个简单的方法: # app/controllers/statistics_controller.rb class StatisticsController < ApplicationController def index @statistics = Statistic.chronologic render json: @statistics end def latest @statistic = Statistic.latest render json: @statistic end end 这将生成由StatisticsController成功处理的URL /products/statistics 。 如何定义导致以下URL的路由: /products/statistics/latest ? 可选:我尝试将工作定义置于关注点但它失败并显示错误消息: undefined method ‘concern’ […]

嵌套命名空间路由转向错误的控制器

使用Rails 3.0.7,我正在为我们的应用程序创建一个API,我有这个设置: 的routes.rb namespace :api do namespace :v1 do match “connect” => “users#login”, :via => :post match “disconnect” => “users#logout”, :via => :post resources :users match “users/:id/foos” => “foos#list”, :via => :get match “users/:id” => “users#update”, :via => :put match “foos/:id/bars” => “bars#list_by_foo”, :via => :get match “foos/:id” => “foos#show”, :via => :get, :constraints => […]

Rails:自定义嵌套控制器操作

我想设置自定义嵌套控制器操作,但我无法弄清楚路由。 我一直收到以下错误 No route matches [GET] “/assets” 的routes.rb resources :companies do resources :requests do match :accept end end index.html.rb “requests”, :action => “accept”, :id => request.id %>

Rails 3 link_to路由(编辑)嵌套资源

对不起,如果有人问其他地方,但我无法弄清楚这一点。 我有一个论坛,其中包含部分,主题和回复。 我正在尝试编辑和删除show topic视图中的回复。 这是结构: resources :sections do resources :topics do resources :replies end end 所以我做了一个rake路线,看看我在哪里链接我的编辑回复。 我看到它的edit_section_topic_reply和我的link_to中我添加了_path。 现在这是我无法弄清楚的。 我通过什么参数? 不应该是: 当我这样做时,我在Topics#show得到一个ActionController::RoutingError 。 No route matches {:topic_id=>#, :controller=>”replies”, :action=>”edit”, :section_id=>nil, :id=>#} 好像它不是传递ID,而是之前的巢,我的新主题运行正常 new_section_topic_reply_path(@topic, @section)

Rails 4 嵌套资源和浅:真

以下post基于Rails 4。 我实际上正在寻找关于多个嵌套资源(超过1个)的良好最佳实践,并且选项浅:true。 首先在我的路线中,有这样的: resources :projects do resources :collections end 相关的路线是: project_collections GET /projects/:project_id/collections(.:format) collections#index POST /projects/:project_id/collections(.:format) collections#create new_project_collection GET /projects/:project_id/collections/new(.:format) collections#new edit_project_collection GET /projects/:project_id/collections/:id/edit(.:format) collections#edit project_collection GET /projects/:project_id/collections/:id(.:format) collections#show PATCH /projects/:project_id/collections/:id(.:format) collections#update PUT /projects/:project_id/collections/:id(.:format) collections#update DELETE /projects/:project_id/collections/:id(.:format) collections#destroy projects GET /projects(.:format) projects#index POST /projects(.:format) projects#create new_project GET /projects/new(.:format) projects#new edit_project GET /projects/:id/edit(.:format) projects#edit project […]

rails – 如何使用祖先制作嵌套路由

我有一个型号: class Page < ActiveRecord::Base has_ancestry validates :slug, :name, uniqueness: true, presence: true before_validation :generate_slug def to_param slug end def generate_slug self.slug = Russian.translit(name).parameterize end end 我正在使用ancestrygem创建页面和子页面树,即页面可以有多个子页面,子页面也可以有多个子页面,依此类推到无穷大。 但我的问题是,我无法制作的东西是/page-1/page-1-2/page-1-2-1 。 所有子页面的URL都是: /page-1-2或/page-1-3-1 。 我的routes.rb: Rails.application.routes.draw do get ‘/pages’ => ‘pages#index’ resources :pages, path: “”, path_names: { new: ‘add’ } root ‘pages#index’ end 如何制作嵌套url? 谢谢!