Итак, у меня есть контроллер поиска, который ищет датчики. Если пользователь ищет указанные атрибуты c, он получает список датчиков, который соответствует искомым атрибутам, и количество искомых датчиков сохраняется в переменной с именем @ сенсоры.
Модель контроллера поиска
class Search < ApplicationRecord
belongs_to :user, optional: true
def sensors
@sensors ||= find_sensors
end
def find_sensors
sensors = Sensor.where(rcomplete: true, lcomplete: true).order(:name)
# search sensor info
sensors = sensors.where("lower(name) like lower(?)", "%#{keywords}%") if keywords.present?
sensors = sensors.where("concentrations.value >= ?","#{conc_min}")
sensors = sensors.where("concentrations.value <= ?","#{conc_max}")
# search publication info
sensors = sensors.joins(:publication).where("lower(publications.title) LIKE lower(?)","%#{publication}%") if publication.present?
if year_min.present?
sensors = sensors.joins(:publication).where("publications.year >= ?","#{year_min}")
end
if year_max.present?
sensors = sensors.joins(:publication).where("publications.year <= ?","#{year_max}")
end
sensors = sensors.joins(:publication).where("lower(publications.author) LIKE lower(?)","%#{author}%") if author.present?
sensors = sensors.joins(:publication).where("lower(publications.cauthor) LIKE lower(?)","%#{co_author}%") if co_author.present?
sensors = sensors.joins(:publication).where("lower(publications.institution) LIKE lower(?)","%#{institution}%") if institution.present?
sensors = sensors.joins(:publication).where("lower(publications.journal) LIKE lower(?)","%#{journal}%") if journal.present?
sensors = sensors.joins(:publication).where("lower(publications.link) LIKE lower(?)","%#{doi_link}%") if doi_link.present?
sensors.uniq
end
end
Затем найденные @sensors переходят в действие show контроллера поиска.
Search Controller
class SearchesController < ApplicationController
skip_before_action :authenticate_user!, :only => [:new,:create, :show]
def show
@sensors = @search.sensors
respond_to do |format|
format.html
end
end
На странице просмотра Search Search результаты поиска отображаются в виде Таблица. Затем есть ссылка на диаграмму с именем analyze result
, и при щелчке она переходит на новую страницу с sensor_ids.
<%= link_to "Analyze Results", charts_path(sensors_ids: @sensors.map(&:id)) %>
На странице индекса диаграммы идентификаторы датчиков передаются следующим образом: который позволяет страницам просмотра использовать идентификаторы датчиков
Chart Controller
class ChartsController < ApplicationController
before_action :set_chart, only: [:show, :edit, :update, :destroy]
def index
@charts = Chart.all
@sensors = Sensor.where(id: params[:sensors_ids])
@sensors.map(&:id)
end
На странице индекса диаграммы приведенная выше версия является верной версией, но это не то, что мне нужно. В нижней части это не работает, и я знаю, что это не имеет смысла, но я хочу использовать эту идею.
<div class="col-md-12">
<%= link_to 'Function Chart', new_function_chart_path(sensors_ids: @sensors.map(&:id)) %>
<div class="col-md-2"></div>
</div>
Неверная версия.
<%= link_to 'Function Chart', new_function_chart_path(sensors_ids: @sensors.map(&:id)), function_chart_path(sensors_ids: @sensors.map(&:id)) %>
Я хотел бы использовать концентрацию датчика для построения графика, однако проблема в том, что мне нужны данные от датчиков для go на странице показа функции, а не функции new стр. Однако я не могу отправить идентификаторы для двух разных действий, поэтому есть ли способ сделать это?