Как использовать частичное в представлениях с разными псевдонимами MIME? - PullRequest
2 голосов
/ 02 июля 2010

Я использую 2 разных набора представлений для 2 разных ролей пользователя.Я использую register_alias:

Mime::Type.register_alias "text/html", :basic

в контроллере:

class SomeController < ApplicationController
  def index
    # …
    respond_to do |format|
      format.html  # index.html.erb (advance)
      format.basic # index.basic.erb
    end
  end
end

В некоторых случаях мне приходится использовать один и тот же код в обоих видах, затем Я бы использовал Partial , но из-за псевдонима MIME я должен использовать 2 идентичные партиалы: my_partial.html.erb и my_partial.basic.erb

Я думаю, что есть решение для DRYиспользуйте только частичный код.

У вас есть какие-нибудь решения?

спасибо, Алессандро

1 Ответ

4 голосов
/ 11 мая 2012

Старый ответ:

Я, наверное, пробовал 50 разных вещей, пока не нашел правильный способ написания части раз, но это того стоило, потому что это супер просто:

Внутри вашего индексного представления вы обычно делаете:

<%= render "my_partial" %>

Это неявно отображается на частичную часть, соответствующую запрошенному вами Mime, поэтому подразумевается наличие двух частичных реализаций.Если вы хотите СУХОЙ частичный, просто явно укажите формат :

<%= render "my_partial.html" %>

В качестве дополнительного бонуса к этому наблюдению, если ваш блок кода responds_to действительно просто для переключения на основев этом формате и без всякой логики, вы можете полностью удалить этот блок кода и все еще работать неявно.

Обновление Rails 3.2:

Поддержка Rails устареладля вышеупомянутого и поддержка была полностью удалена в последней версии Rails.Ниже приведен правильный путь для Rails 3.2:

<%= render :partial => "my_partial", :formats => [:html] %>
...