`
xxh123
  • 浏览: 33265 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

rails的url_for

阅读更多
rails的url_for方法是用的很广,这里主要讨论的actioncontroller中的urlwriter的部分实现。
rails的url_for调用的是Routting::Routes.generate(options,{})。该方法把url的生成分为两个部分即path和后面的参数的生成。参数生成主要采用cgi.escap(param),将每个参数都这样生成最后采用数组的方法Array * '&'(等同于Array.join('&'))。

path的生成比较复杂主要使用segment生成,segment是加载routes.rb后为每条规则写的数据组成。具体实现比较复杂,我现在也就了解一部分,主要是生成加载的生成,但是怎么进行查询加载比如url_for的实现仍然不清楚,希望大家谁对这部分了解可以给我帮助。

使用url_for和routes.rb能够给我的设计带来方便,查询的规则和你在routes.rb
写的顺序有关,例如使用规则进行seo。我们知道一个网站的相同的内容最好只有一个url,但是我们的will_paginate的首页的url会生成?page=1和我们的默认页的url很可能不同,我们这里使用两条规则,第一条首页规则,给予默认的page=1,第二条分页规则,我们的will_paginate主要使用的就是url_for,分页时首页查找会用第一条规则,其余的会使用第二条规则,从而达到我们的目的。
分享到:
评论

相关推荐

    url_plumber:更改 rails 中的单个 url 参数

    水管工 曾经有一个带有...更改url参数开始的最简单方法是沿着这些路线的某个地方: # url_plumber_helper.rbmodule UrlPlumberHelper def plumb(key_path, value = nil) return url_for (@plumber ||= ::UrlPlumber::Pl

    rails-form_for-lab-v-000

    使用正确的路由和路由帮助程序URL为new , create , edit和update构建RESTFul操作。 指示 在本实验中,您将通过构建创建和编辑学校课程的功能来扩展Flatiron学校的学生管理应用程序的功能。 您将从头开始构建所有...

    weixin_rails_middleware_example:微信Rails例子

    自述文件 对于: : 需要 Rails 4.1 用法: rm Gemfile.lock bundle install rake db:create rake db:migrate rails server 从下载ngrok ,注册,获取你自己的 auth token,比如bFDybfmIx/Ad6Z5/evE3 ,... For

    urls_for_humans:将持久的、有意义的 url 应用于您的 Rails 应用程序

    Urls for Humans 是一个 gem,它允许您利用Model.find(params[:id]) 、 to_i和to_param发生的事情,为 Rails 应用程序的 url 应用有意义的名称。 这使得将users/1为users/1-john-otander 。 只要 url 以模型的id为...

    rails6-silver

    rails6-silver 该存储库旨在用于Ruby on Rails技术员认证考试(银)。由于我们基于对策书籍学习,因此我们致力于每个项目。...url_for only_path /锚点/用户/密码/操作 --- URL生成 帮手 url_for --- 背部 链接生

    themes_for_rails:Rails 3的主题支持

    为基于资产管道的主题添加theme-image-url sass帮助器方法更新生成器和rake任务以支持基于资产管道的主题( NEW )可与Rails Assets Pipeline一起使用,而不会产生干扰并加以利用。兼容性此gem可与3.0版到3.2.1版...

    ts_routes-rails:受js-routes的启发,将Rails URL助手导出到TypeScript。

    TsRoutes for Rails 此gem在TypeScript中生成Rails URL帮助器,该routes.rb与routes.rb同步。 这是受启发的,它发明了将URL助手导出到JavaScript的好主意。用法在您的lib/tasks/ts_routes.rake : namespace :ts do ...

    EditPlus - text editor for Windows

    Syntax highlighting for HTML, PHP, Java, C/C++, CSS, ASP, Perl, JavaScript, VBScript, Python and Ruby on Rails. Also, it can be extended for other programming languages based on custom syntax files. ...

    mautic-rails:MauticRuby客户端包装

    轨道 Roau辅助工具/ Mautic API和... # This is for oauth handshake token url. I need to know where your app listen config . base_url = "https://my-rails-app.com" # OR it can be Proc # *optional* This

    canonical_dude:轻松规范的URL生成

    canonical_dude是Rails应用程序的一个小帮手,可以利用Canonical URL标记。 使用它来设置URL的首选版本。 了解有关规范网址的更多信息。 安装 # for system wide usage gem install 'canonical_dude' # or just in ...

    Editplus 3.5.1 可注册版 + 附注册机 + php 最新语法文件 + SQL 语法高清提示

    Syntax highlighting for HTML, PHP, Java, C/C++, CSS, ASP, Perl, JavaScript, VBScript, Python and Ruby on Rails. Also, it can be extended for other programming languages based on custom syntax files. ...

    activejob-locks

    Activejob::锁Activejob Locks 是一个插件,它将根据队列或有效负载锁定您的工作人员。 Activejob Locks 依赖于 ,它只是一个提议算法的实现。... config_for ( :redis ) [ "url" ] ] # or # config.ac

    translation-engine:一个Rails引擎,用于从Translation Server发送和接收翻译

    翻译引擎 gem 'translation_engine', git: '... config do | config | # key for user config . api_key = 'API_KEY' # url to Translation Server config . api_host = 'http://127.0.0.1:3000' # enable

    place-for-nerds-backend

    ###安装说明###导航到单击绿色代码按钮,然后单击URL右侧的剪贴板以复制URL。 打开终端,然后将目录更改为桌面(在Mac上为cd桌面)。 然后输入:git clone“项目网址”。 您可以只在git clone之后粘贴网址。 然后将...

    Flask Blueprints.pdf 最新 原版

    there are many extensions available to Flask which helps it to function at the same level as other large frameworks such as Django and Ruby on Rails. This book will demonstrate how to develop a ...

    libpixel-ruby:Ruby库来生成和签名LibPixel URL

    Ruby库和Rails插件来生成和签名LibPixel URL。 安装 将此行添加到您的应用程序的Gemfile中: gem 'libpixel' 然后执行: $ bundle 或将其自己安装为: $ gem install libpixel 用法 配置LibPixel客户端: ...

    Flask Blueprints

    fledged multi-package applicationIntegrate Flask-Login for simple user authentication, Flask-WTF for forms, and Flask-SQLAlchemy for database interactionsExplore URL routing and dispatching in a ...

    akelos for windows

    Akelos是一个类似于Ruby on Rails的PHP开发框架。它的主要目的是帮助程序员依据MVC模式开发基于数据库的多语言Web应用程序。它通过约定俗成代替配置来让你少写代码。此 外Akelos支持URL改写,数据库移植,纯PHP支持...

    stackato-buildpack-ruby:用于Stackato的替代rubyrails buidpack

    已淘汰 用于Stackato的Ruby buildpack 一个简单的ruby ,可在Stackato中部署Rails应用程序。 只需运行bundle install来安装依赖项,而不是在CloudFoundry插件执行的Gemfile.... # for staging cache myapp-cache: f

Global site tag (gtag.js) - Google Analytics