Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические dropdown lists: проблемы с параметром, почему не могу получить значение  
:(
    Опции темы
maep
Дата 18.9.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.6.2008

Репутация: нет
Всего: нет




Доброго времени суток, уважаемые форумчане!
В рельсах и в вебе вообще я новичек, изучаю, можно сказать. Надо сделать выбор страны\города, соответствено, в дропдауне выбираю страну - в другом дропдауне - город. Город belongs_to страна.

Нашел пример:
http://pullmonkey.com/2008/3/30/dynamic-se...s-ruby-on-rails

Сделал по аналогии.
(Для формирования формы я использую form_for, в примере этого нет,
но collection_select этого объекта мне не покорился, использую простой.)

Проблема такая: в функции контроллера update - не могу получить параметр выбранного города. Да и страны тоже, хотя - странно, но в update_cities (запускатся по событию onselect дропдауна страна) country_id отлично получается. Вопрос: как таки получить smile?

Вопрос второй: как бы сделать так, чтоб этот city_id был параметром account, если это возможно? Ну и вообще, как грамотно сделать?..

Заранее спасибо!




Вот код:
Код


   1. class AccountsController < ApplicationController  
   2. ...  
   3.  # GET /accounts/1/edit  
   4. def edit  
   5.     @account = Account.find(params[:id])  
   6.     @countries = Country.find(:all)  
   7.     @cities = City.find(:all)  
   8. end  
   9. def update  
  10.     @account = Account.find(params[:id])  
  11.     mama = params[:city_id] # тут пытаюсь получить параметр, не получается  
  12.     respond_to do |format|  
  13.       if @account.update_attributes(params[:account])  
  14.         flash[:notice] = 'Account was successfully updated.'  
  15.         format.html { redirect_to(@account) }  
  16.         format.xml  { head :ok }  
  17.       else  
  18.         format.html { render :action => "edit" }  
  19.         format.xml  { render :xml => @account.errors, :status => :unprocessable_entity }  
  20.       end  
  21.     end  
  22.   end  
  23. def update_cities  
  24.     puts "mama papa " + params[:country_id].to_s  
  25.     country = Country.find(params[:country_id])  
  26.     cities = country.cities  
  27.       
  28.     render :update do |page|  
  29.       page.replace_html 'cities', :partial => 'cities', :object => cities  
  30.     end  
  31.   
  32.   end  
  33. end  



представление:



Код

   1. <h1>Editing account</h1>  
   2.   
   3. <%= error_messages_for :account %>  
   4.   
   5. <% form_for(@account) do |f| %>  
   6.   <p>  
   7.     <b>Name1</b><br />  
   8.     <%= f.text_field :name1 %>  
   9.   </p>  
  10.   
  11.   <p>  
  12.     <b>Country</b><br />  
  13.     <%= collection_select(nil, :country_id, @countries, :id, :name,{},   
  14.       {:onchange => "#{remote_function(:url  => {:action => "update_cities"}, 
  15.                                                       :with => "'country_id='+value")}"}) %>  
  16.   </p>  
  17.   
  18.   <div id = "cities"><%= render :partial => "cities", :object => @cities %> </div>  
  19.   
  20.   <p>  
  21.     <b>Avatar</b><br />  
  22.     <%= f.text_field :avatar %>  
  23.   </p>  
  24.   
  25.   <p>  
  26.     <%= f.submit "Update" %>  
  27.   </p>  
  28. <% end %>  



partial:

Код

   1. <p>  
   2.     <b>City</b><br />  
   3.     <%= collection_select(nil, :city_id, cities, :id, :name) %>  
   4.   </p>  


Это сообщение отредактировал(а) maep - 19.9.2008, 05:28
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.