1. 12 12月, 2013 5 次提交
  2. 11 12月, 2013 1 次提交
    • P
      Fix mounting engines inside a resources block · e6c602da
      Piotr Sarnacki 提交于
      When a route is mounted inside a resources block, it's automatically
      prefixed, so a following code:
      
          resources :users do
            mount Blog::Engine => '/blog'
          end
      
      will generate a user_blog path helper.
      
      In order to access engine helpers, we also use "mounted_helpers", a list
      of helpers associated with each mounted engine, so a path to blog's post
      can be generated using user_blog.post_path(user, post).
      
      The problem I'm fixing here is that mount used a raw :as option, without
      taking nestings into account. As a result, blog was added to a route set
      as a `user_blog`, but helper was generated for just `blog`.
      
      This commit applies the proper logic for defining a helper for a mounted
      engine nested in resources or resource block.
      
      (closes #8533)
      e6c602da
  3. 10 12月, 2013 2 次提交
    • Ł
      Inline variants syntax · edacdbfa
      Łukasz Strzałkowski 提交于
      In most cases, when setting variant specific code, you're not sharing any code
      within format.
      
      Inline syntax can vastly simplify defining variants in those situations:
      
        respond_to do |format|
          format.js { render "trash" }
          format.html do |variant|
            variant.phone { redirect_to progress_path }
            variant.none  { render "trash" }
          end
        end
      
      Becomes:
      
        respond_to do |format|
          format.js         { render "trash" }
          format.html.phone { redirect_to progress_path }
          format.html.none  { render "trash" }
        end
      edacdbfa
    • Ł
      Simplify @responses hash initialization · fbb6be50
      Łukasz Strzałkowski 提交于
      @responses hash needs to be initialized with mime types that we get from
      Collector#collect_mimes_from_class_level. Mime::Type class as key and nil as
      value. This need to happen before content negotiation. Before that, it was
      looping though mime types and executing mime-type-generated method inside
      collector (see
      AbstractController::Collector#generate_method_for_mime). That approach resulted
      in 2 unnecessary method calls for each mime type
      collected by Collector#collect_mimes_from_class_level.
      
      Now hash is initialized in place, without usage of Collector#custom method.
      fbb6be50
  4. 09 12月, 2013 3 次提交
    • D
      Revert "Merge pull request #13235 from strzalek/variants-inline" -- needs a little more work! · 4aae538d
      David Heinemeier Hansson 提交于
      This reverts commit 18616114, reversing
      changes made to cad9eb17.
      4aae538d
    • Ł
      Inline variants syntax · 2647d2f6
      Łukasz Strzałkowski 提交于
      In most cases, when setting variant specific code, you're not sharing any code
      within format.
      
      Inline syntax can vastly simplify defining variants in those sitiations:
      
        respond_to do |format|
          format.js { render "trash" }
          format.html do |variant|
            variant.phone { redirect_to progress_path }
            variant.none  { render "trash" }
          end
        end
      `
      Becomes:
      
        respond_to do |format|
          format.js         { render "trash" }
          format.html.phone { redirect_to progress_path }
          format.html.none  { render "trash" }
        end
      2647d2f6
    • Ł
      Simplify @responses hash initialization · 9b8c0ff3
      Łukasz Strzałkowski 提交于
      @responses hash needs to be initialized with mime types that we get from
      Collector#collect_mimes_from_class_level. Mime::Type class as key and nil as
      value. This need to happen before content negotiation. Before that, it was
      looping though mime types and executing mime-type-generated method inside
      collector (see
      AbstractController::Collector#generate_method_for_mime). That approach resulted
      in 2 unnecessary method calls for each mime type
      collected by Collector#collect_mimes_from_class_level.
      
      Now hash is initialized in place, without usage of Collector#custom method.
      9b8c0ff3
  5. 08 12月, 2013 3 次提交
  6. 06 12月, 2013 2 次提交
  7. 05 12月, 2013 6 次提交
  8. 04 12月, 2013 5 次提交
    • C
      Improve a couple exception messages related to variants and mime types · 3b40a5d8
      Carlos Antonio da Silva 提交于
      Avoid one-liner conditionals when they are too big. Avoid concatenating
      strings to build error messages. Improve messages a bit.
      3b40a5d8
    • C
      Add nodoc to added VariantFilter class · bc26f442
      Carlos Antonio da Silva 提交于
      bc26f442
    • Ł
      Action Pack Variants · 2d3a6a0c
      Łukasz Strzałkowski 提交于
      By default, variants in the templates will be picked up if a variant is set
      and there's a match. The format will be:
      
        app/views/projects/show.html.erb
        app/views/projects/show.html+tablet.erb
        app/views/projects/show.html+phone.erb
      
      If request.variant = :tablet is set, we'll automatically be rendering the
      html+tablet template.
      
      In the controller, we can also tailer to the variants with this syntax:
      
        class ProjectsController < ActionController::Base
          def show
            respond_to do |format|
              format.html do |html|
                @stars = @project.stars
      
                html.tablet { @notifications = @project.notifications }
                html.phone  { @chat_heads    = @project.chat_heads }
              end
      
              format.js
              format.atom
            end
          end
        end
      
      The variant itself is nil by default, but can be set in before filters, like
      so:
      
        class ApplicationController < ActionController::Base
          before_action do
            if request.user_agent =~ /iPad/
              request.variant = :tablet
            end
          end
        end
      
      This is modeled loosely on custom mime types, but it's specifically not
      intended to be used together. If you're going to make a custom mime type,
      you don't need a variant. Variants are for variations on a single mime
      types.
      2d3a6a0c
    • C
      ce148025
    • C
      Changelog improvements [ci skip] · 7c20a8b5
      Carlos Antonio da Silva 提交于
      7c20a8b5
  9. 03 12月, 2013 5 次提交
  10. 02 12月, 2013 2 次提交
    • A
      Try to escape each part of a path redirect route correctly · d2e1caaa
      Andrew White 提交于
      A path redirect may contain any and all parts of a url which have different
      escaping rules for each part. This commit tries to escape each part correctly
      by splitting the string into three chunks - path (which may also include a host),
      query and fragment; then it applies the correct escape pattern to each part.
      
      Whilst using `URI.parse` would be better, unfortunately the possible presence
      of %{name} parameters in the path redirect string prevents us from using it so
      we have to use a regular expression instead.
      
      Fixes #13110.
      d2e1caaa
    • T
      223ff794
  11. 01 12月, 2013 1 次提交
  12. 30 11月, 2013 1 次提交
  13. 29 11月, 2013 1 次提交
    • Y
      first pass through CHANGELOGS to extract 4_1_release_notes. [ci skip] · 7c6d99e8
      Yves Senn 提交于
      Extract **notable changes**, **deprecations** and **removals** from
      each CHANGELOG.
      
      I tried to reference the commits and pull requests for new features
      and deprecations.
      
      In the process I also made some minor changes to the CHANGELOGS.
      
      The 4_1_release_notes guide is declared WIP.
      7c6d99e8
  14. 28 11月, 2013 2 次提交
  15. 25 11月, 2013 1 次提交