Как получить данные столбца внешнего ключа, когда они используются в поле выбора - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть этот ruby ​​на рельсах код

<%= builder.select(:serving_size_id, '') %>

Я не указал никаких параметров специально, потому что я устанавливаю параметры по-другому при загрузке страницы (используя jQuery и Ajax).

Вопрос: есть ли способ получить значение из столбца "serve_size_id", но не изменить эту строку?У меня есть партиал, который я использую для новых и редактирования, и я думаю, было бы здорово, если бы я мог выполнить настройку выбранного индекса в JS.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2010

Использовать jQuery в рельсах легко, но немного сложнее, чем прототип.

ex: "div id =" serve_size "class =" nice "rel =" <% = h num%> "> Все здесь ... / div>"

в application.js делает следующее:

// application.js

$ (документ) .ready (функция () { если ($ ( '# serving_size') { $ ( '# Serving_size'). Жить ( "MouseOver", функция () { // мы находимся над определенным размером порции идентификатора div если ($ ( '# serving_size'). hasAttr ( 'отн')) { alert ($ ('# serve_size'). attr ('rel'); // ваше динамическое значение rel и функция fire } } } если ( 'хороший') { $ ( 'Хороший'). Жить ( "MouseOver", функция () { // теперь мы наводим курсор на любой элемент на странице с классом nice если ($ (это) .hasAttr ( 'отн')) { // теперь мы используем объект jQuery ref и находим, что у этого объекта есть attr rel оповещения ($ (это) .attr ( 'отн')); // показывает динамическое значение rel } } } });

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

Функция live в jQuery великолепна, потому что ее можно вызывать для элементов, которые в конечном итоге появятся на странице (например, если вы заполните что-то с помощью ajax, jQuery будет подготовлен для того, чтобы этот элемент находился на странице) 1013 *

Надеюсь, это поможет.

0 голосов
/ 05 февраля 2010

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

1) Когда вы получаете опции через AJAX, попросите сервер указать, какой из них выбран. Это можно сделать, вернув HTML <option> теги с selected="selected", установленными для одного из них. Чтобы сделать это, ваш AJAX-запрос должен будет предоставить информацию об объекте, для которого это поле выбора (чтобы сервер мог посмотреть текущее значение serving_size_id объекта).

2) Когда вы визуализируете поле в исходной части, также визуализируйте некоторый JavaScript, который устанавливает текущее значение поля, например, под тем, что у вас есть выше:

<%= javascript_tag "var ssid = '#{builder.object.serving_size_id}';" %>

Затем, после извлечения параметров через AJAX, проверяется переменная ssid и выбирается правильная опция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...