Согласно JEP 262: TIFF Image I / O плагин TIFF, который ранее был частью JAI, будет доступен как часть Java SE, начиная с Java 9.
Это означает, что с использованием Java 9 будет работать только следующий код без каких-либо дополнительных импортов или зависимостей:
BufferedImage image = ImageIO.read(inputTIFF);
// ...modify image (compose, resize, sharpen, etc)...
ImageIO.write(image, "TIFF", outputTIFF);
Я еще не смог проверить поддержку не- базовый TIFF-ароматизатор в этом плагине, но я предполагаю, что по крайней мере базовые TIFF должны полностью поддерживаться.
Как насчет:
def index
author_id = params[:author_id]
@posts = Post.scoped
@post = @post.where(:author_id => author_id) if author_id.present?
@post = @post.where(:some_other_condition => some_other_value) if some_other_value.present?
end
Post.scoped
по сути является лениво загруженным эквивалентом Post.all (поскольку Post.all возвращает массив немедленно, а Post.scoped просто возвращает объект отношения). Этот запрос не будет выполнен, пока вы на самом деле не попытаетесь выполнить его в представлении (вызывая .each).
Мммм, лучший подход, который вы хотите использовать, может состоять в том, чтобы распространить это на 2 действия.
def index
@post = Post.all
end
def get
@post = Post.where("author=?", params[:author_id])
end
. или показать), чтобы получить запрошенный и показать его!
Вы должны смоделировать URL, используя вложенные ресурсы. Ожидаемый URL будет / авторы / 1 / сообщений. Думайте об авторах как о ресурсах. Прочитайте о вложенных ресурсах в этом руководстве: http://guides.rubyonrails.org/routing.html (прокрутите до 2.7 - Вложенные ресурсы).
Этот вопрос довольно старый, но он все еще высоко ценится в Google в 2019 году, а также некоторые более ранние ответы устарели, поэтому я подумал, что поделюсь возможным решением.
В модели вводятся некоторые области с тестом на наличие переданного параметра:
class Post
scope :where_author_ids, ->(ids){ where(author_id: ids.split(‘,’)) if ids }
scope :where_topic_ids, ->(ids){ where(topic_id: ids.split(‘,’)) if ids }
Затем в контроллере вы можете просто установить столько фильтров, сколько пожелаете, например:
def list
@posts = Post.where_author_ids(params[:author_ids])
.where_topic_ids(params[:topic_ids])
.where_other_condition_ids(params[:other_condition_ids])
.order(:created_at)
Параметр может быть одним значением или разделенным запятыми списком значений, оба работают нормально.
Если param не существует, он просто пропускает предложение where и не фильтрует его по определенным критериям. Если параметр существует, но его значение является пустой строкой, он будет «отфильтровывать» все.
Конечно, это решение не подходит для любых обстоятельств. Если у вас есть страница просмотра с несколькими фильтрами, но при первом открытии вы хотите показать все свои данные, а не данные, пока не нажмете кнопку «Отправить» или аналогичную (как это сделал бы контроллер), вам придется слегка подправить ее. ,
Я попробовал SQL-инъекцию, и rails, кажется, хорошо справляется с обеспечением безопасности, насколько я могу видеть.