Tag: 路线

Rails中的匹配和路由

我生成了一个控制器并更改了路由,但打开链接会在本地服务器上产生错误。 生成控制器和路由 rails generate controller StaticPages home about team contact 改变routes.rb MyApp::Application.routes.draw do root to: ‘static_pages#home’ match ‘/about’, to: ‘static_pages#about’ match ‘/team’, to: ‘static_pages#team’ match ‘/contact’, to: ‘static_pages#contact’ end 根路径有效但“约会”,“团队”或“联系”链接都不起作用。 这是我得到的错误: “如果不指定HTTP方法,则不应在路由器中使用match方法。如果要将操作公开给GET和POST,请via: [:get, :post]选项添加。如果要将操作公开给GET,在路由器中使用get :而不是:匹配“controller#action”执行:get“controller#action”“ 为什么我不能使用’匹配’?

Rails路由:为路径助手提供默认值

有没有办法为url / path助手提供默认值? 我有一个可选的范围环绕我的所有路线: #config/routes.rb Foo::Application.routes.draw do scope “(:current_brand)”, :constraints => { :current_brand => /(foo)|(bar)/ } do # … all other routes go here end end 我希望用户能够使用以下URL访问该网站: /foo/some-place /bar/some-place /some-place 为方便起见,我在ApplicationController设置了@current_brand : # app/controllers/application_controller.rb class ApplicationController < ActionController::Base before_filter :set_brand def set_brand if params.has_key?(:current_brand) @current_brand = Brand.find_by_slug(params[:current_brand]) else @current_brand = Brand.find_by_slug('blah') end end end 到目前为止一切顺利,但现在我必须修改所有*_path和*_url调用以包含:current_brand参数,即使它是可选的。 […]

如何在rails中动态调用路由助手?

例如,我构建了一个名为“new_work_path”的字符串,现在我想将该帮助器称为方法。 我尝试过send(“new_work_path”, vars)并从许多对象调用相同的发送。 但我不认为我找到了正确的对象来称呼这些助手。 要做object.send(“new_work_path”, vars) ,我应该找什么对象 ? 我试着在网上寻找一段时间,但找不到任何东西。 如果有人能在这一个上发光,那就太棒了! 谢谢!

Ruby On Rails更新Heroku动态路由

我有一个应用程序使用应用程序范围的slugs(使用Slugalicious gem与Sluggable表),并使用此代码路由到这些slug: #Slugs begin Slug.all.each do |s| begin get “#{s.slug}” => “#{s.sluggable_type.downcase.pluralize}#show”, :id => s.slug rescue end end rescue end 我使用以下代码更新slugs模型时,我目前更新路线: after_save :update_routes def update_routes Rails.application.reload_routes! end 这在dev中非常有效: 我得到的问题是,如果我更新或创建一个新的slug,Heroku不会更新以适应它。 它在开发中工作,并且(令人困惑),如果我在Heroku上执行“heroku run rake routes”,它就可以工作。 但是,如果我尝试浏览到新url,该应用只会显示404。 如果我重新部署应用程序,所有路由都可以工作,这让我相信这与更新应用程序范围内的路由有关 这个问题说它与在Heroku上运行多个进程有关,但我还没有找到它。 有任何想法吗? 提前谢谢了

找不到带下划线的路线或者没有正确对待它

我在路线中有这个: Rails.application.routes.draw do namespace :api do namespace :v3_4 do # ….. 和控制器app/controllers/api/v3_4/base_controller module Api module V3_4 class BaseController < ApplicationController # …… end end end 和app/controllers/api/v3_4/another_controller module Api module V3_4 class AnotherController < ApplicationController end end end 耙路线: Prefix Verb URI Pattern Controller#Action api_v3_4_test GET /api/v3_4/test(.:format) api/v3_4/base#test api_v3_4_one GET|OPTIONS /api/v3_4/one(.:format) api/v3_4/another#one api_v3_4 GET|OPTIONS /api/v3_4/two/:id(.:format) api/v3_4/another#two […]

基于数据库模型的动态Rails路由

所以我正在构建一个需要基于两种不同类型的路由的Rails站点 我有一个语言模型和一个分类模型 因此,我需要能够访问语言路线/ruby以查看顶级ruby资源,还可以访问/书籍以查看所有语言的热门书籍 我试过这样的路线 get ‘/:language’, to: “top_voted#language” get ‘/:category’, to: “top_voted#category” 问题是逻辑无法弄清楚两者之间的差异,并在后端引起了一些冲突 我也尝试过这个 Language.all.each do |language| get “#{language.name}”, to: “top_voted#language”, :language => language.name end Category.all.each do |category| get “#{category.name}”, to: “top_voted#category”, :category => category.name end 但问题是我们正在部署它的Heroku不允许在路由中进行数据库调用。 有更简单的方法吗? 我们需要能够以某种方式动态生成这些路由。

缺少主机链接! 请为Rails 4提供:host参数

缺少主机链接! 请提供:host参数,设置default_url_options [:host],或将:only_path设置为true 我随机地随机获取此错误,通常重新启动服务器会将问题解决一段时间,然后再次显示。 我在开发和test.rb文件中添加了config.action_mailer.default_url_options = “localhost:3000” 。 另外,我在一个模块中使用了include Rails.application.routes.url_helpers来访问路由,我读到这可能是我收到这些错误的原因但删除它会让我无法访问路由。 该模块用于datatables gem。

使用带有get方法的form_for标记

我正在尝试使用get方法提交表单。 早些时候我正在尝试使用form_tag进行类似的操作并且它正在工作但现在当我更改为form_for标记时,这似乎不起作用。 filter_path, :method => :get) do |f| %> 我得到一个没有路由错误。

Rails路由:GET没有param:id

我正在开发基于rails的REST api。 要使用这个API,你必须登录。关于这一点,我想在我的用户控制器中创建一个方法,它将返回登录用户信息的json。 所以,我不需要在URL中传递:id 。 我只想打电话给http://domain.com/api/users/me 所以我尝试了这个: namespace :api, defaults: { format: ‘json’ } do scope module: :v1, constraints: ApiConstraints.new(version: 1, default: true) do resources :tokens, :only => [:create, :destroy] resources :users, :only => [:index, :update] do # I tried this match ‘me’, :via => :get # => api_user_me GET /api/users/:user_id/me(.:format) api/v1/users#me {:format=>”json”} # Then […]

Rails路由 – 资源的自定义路由

我正在构建一个Rails应用程序,我想坚持所有那些花哨的东西,如REST和资源,但我想稍微自定义我的路线。 我希望我的GET路线更加冗长 – 我正在创建的应用程序是一个简单的博客,所以我不喜欢GET /posts/1-my-first-post而是喜欢GET /posts/1-my-first-post 。 任何想法如何做到这一点? 没有在网上找到任何东西。