Итак, я новичок в Rails и программировании ОО в целом.Я немного разбираюсь в архитектуре MVC.Моя цель - создать (почти) полностью динамический веб-сервер для построения графиков.Я довольно запутался с параметрами, формами и выбранными помощниками.
Что я хочу сделать, так это использовать раскрывающиеся списки Rails для передачи параметров в виде строк моему контроллеру, который будет использовать параметры для выбора определенных данных столбца из моей базы данных и их динамического построения.У меня работает последняя часть задачи, но я не могу передать значения из моего представления в контроллер.
Для простоты, скажем, моя схема базы данных выглядит следующим образом:
--------------Plot---------------
|____x____|____y1____|____y2____|
| 1 | 1 | 1 |
| 2 | 2 | 4 |
| 3 | 3 | 9 |
| 4 | 4 | 16 |
| 5 | 5 | 25 |
...
, и в моей модели у меня есть области динамического селектора, которые позволяют мне выбирать только определенные столбцы данных: на графике.rb
class Plot < ActiveRecord::Base
scope :select_var, lambda {|varname| select(varname)}
scope :between_x, lambda {|x1,x2| where("x BETWEEN ? and ?","#{x1}","#{x2}")}
Таким образом, я могу позвонить:
irb>>@p1 = Plot.select_var(['x','y1']).between_x(1,3)
и получить взамен класс, где @ p1.x и @ p1.y1 - мои единственные атрибуты, толькодля значений от x = 1 до x = 4, которые я динамически строю.
Я хочу начать с представления (plot / index), где я могу динамически выбирать, какие имена переменных (имена столбцов таблицы), а также какие строки из базы данных для выборки и построения.Проблема в том, что большинство избранных помощников, кажется, не работают со столбцами в базе данных, а только со строками.
Итак, чтобы выбрать столбцы, я сначала получаю массив имен столбцов, которые существуют в моей базе данных, с помощью функции Iписал.
Plots Controller
def index
d=Plot.first
@tags = d.list_vars
end
Итак @tags = ['x', 'y1', 'y2']
Затем в моем plot / index.html.erb я пытаюсь использовать каплювниз, чтобы выбрать, какие переменные я отправляю обратно в контроллер.
index.html.erb
<%= select_tag( :variable, options_for_select(@plots.first.list_vars,:name,:multiple=>:true) )%>
<%= button_to 'Plot now!', :controller =>"plots/plot_vars", :variable => params[:variable]%>
Наконец, снова в контроллере
Plots controller
...
def plot_vars
@plot_data=Plot.select_vars([params[:variable]])
end
Проблема в том, что каждый раз, когда я пробую это (или один из ста его вариантов), params [: variable] равен nill.
Как я могу использовать раскрывающийся список для передачи параметра с именами строковых переменных в контроллер?
Извините, это так долго, я боролся с этим уже около месяца.:-( Я думаю, что моя самая большая проблема в том, что эта настройка не совсем соответствует архитектуре Rails. У меня нет «пользователей» и «статей» в качестве отдельных объектов. У меня действительно есть структура данных, а не объект данных.я думаю, что работать со структурой в терминах объекта данных не обязательно проще всего.
Для фона: моя фактическая база данных имеет около 250 столбцов и пару миллионов строк, и они изменяются и модифицируются.время от времени. Я знаю, что могу сделать базу данных умнее, но с моей стороны это того не стоит. Я работаю в научном институте, где есть масса проектов с такими же базами данных. У каждого есть веб-разработчик, который тратитмесяцев, настраивающих веб-интерфейс и их собственные настройки для создания графиков. Я хочу сделать это полностью динамичным, так как решение plug-and-play, так что все, что вам нужно сделать, это указать соединение с базой данных, и эта установка rails будет автоматически отображаться и отображатьсякакие данные вы хотите в нем. Я больше последовательный программистномер числа, как и многие люди здесь.Я думаю, что этот проект мог бы быть очень полезным в конце, но его трудно понять для меня прямо сейчас.