Rails 3, обновите данные, используя выбор из тега select - PullRequest
0 голосов
/ 22 мая 2011

Я новичок в рельсах, однако довольно хорошо знаком с "обычным" программированием MVC, таким как Spring и .net.Я пытаюсь справиться со всем этим новым способом работы, но я застреваю - особенно когда дело доходит до рендеринга / обновления одного и того же представления с различными данными, основанными на выборе, сделанном пользователем.

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

Все, что яхочу сделать так:

База данных "схема", с таблицами a, b, c и их ссылками:
C -> A
C -> B

Основываясь на выборе B в раскрывающемся списке, я хочу показать все «C's C» - не обращайте внимания на часть запроса, которая прямо вперед.К настоящему времени я выбираю первый B как «первый рендер» страницы в моем контроллере, но когда пользователь выбирает другой B в раскрывающемся списке, представление должно быть перерисовано на основе выбора ...
Я не хочуиспользовать пользовательское заполнение javascript или какой-то другой "странный" способУ меня должна быть возможность выбрать что-то и обновить вид, основываясь на выборе в RoR.

Я надеюсь, что вы либо поможете мне, либо укажете мне правильное направление.

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Поместите все эти списки выбора в форму, а в событие 'onchange' списков добавьте javascript, который отправляет форму ($ ('form_name'). Submit ()).После отправки формы у вас есть все выбранные значения в качестве параметров (params [: select_list_1], params [: select_list_2]).Обрабатывайте их как хотите, запускайте запросы и снова отображайте представление.

Вы можете отправить форму на то же действие.Действие будет примерно таким:

def index
  if !request.post?
    # Generate default values
  else
    # Generate new resultset based on params
  end
end

РЕДАКТИРОВАТЬ (пример формы): Форма может быть добавлена ​​как и: url определяет действие элемента формы:

<%= form_for(:select_list_form, :url => {:controller => "my_controller", :action => "index"}) do |f| %>
<!-- Your select list here -->
    <%= f.submit "Continue", :class => "form-button form-left" %>
<% end %>
<!-- Render data based on your instance variables -->
0 голосов
/ 22 мая 2011

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

Вызывает ajax-запрос при изменении списка выбора. Затем вы должны настроить новое действие в вашем контроллере, например load_related:

def load_related
    @childreen = Model.where(....)
    render :update do |page|
         page.replace 'div id where you whant stuff to appear', :partial => '...'
    end
end

Это ваш первый запрос ajax в Rails. Для документации:

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