Хобрук: Ваш путь к мастерству в программировании

Как использовать частичное представление с другим псевдонимом MIME?

Я использую 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

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

Я думаю, что есть решение СУШИТЬ код и использовать только частичное.

У вас есть решения?

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


  • Почему вы используете разные типы MIME для разных ролей? Это звучит немного странно для меня, если только одна из ролей не предназначена для пользователей, заходящих на сайт с помощью мобильного устройства. 02.07.2010
  • На самом деле это псевдоним MIME. Я получил это решение здесь (мой вопрос): stackoverflow.com/questions/3157063/ 02.07.2010

Ответы:


1

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

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

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

<%= render "my_partial" %>

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

<%= render "my_partial.html" %>

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

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

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

<%= render :partial => "my_partial", :formats => [:html] %>
10.05.2012
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

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