Поиск:

Ответ в темуСоздание новой темы Создание опроса
> select_tag 
V
    Опции темы
RedAlliance
  Дата 11.2.2011, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



доброго времени суток!помогите,пожалуйста,решить проблемку..
во вьюхе для регистрации использую select_tag:

  <p>
    <%= f.label :faculty %><br />
    <%if not @faculty == nil %>
    <%= select_tag :faculty,options_for_select (@faculty.map {|p| [p.faculty,p.dean]})%><span style="color:red">*</span><br />    
  </p>
  <p>
    <%= f.label :group %><br />
    <%if not @group == nil %>
    <%= select_tag :group,options_for_select (@group.map {|p| [p.group_number,p.faculty]})%><span style="color:red">*</span><br />    
  </p>

во-первых,он мне почему-то вместо строчек "факультет, декан" и "группа,факультет" выдаёт только "факультет" и "группа",
а во-вторых,при выборе из этого неполноценного списка выдаёт ошибки:

# Faculty can't be blank
# Group can't be blank
которые соответственно написаны в модели:то есть он не видит выбора-переменные пустые,получается..

объясните,пожалуйста,что я делаю неверно...


Это сообщение отредактировал(а) RedAlliance - 11.2.2011, 21:24
PM MAIL   Вверх
source777
Дата 11.2.2011, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Цитата(RedAlliance @  11.2.2011,  21:22 Найти цитируемый пост)
объясните,пожалуйста,что я делаю неверно...

ты не читаешь документацию и как следствие вызываешь хелперы со случайными параметрами, а они вообще-то кое-что значат...


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
RedAlliance
  Дата 11.2.2011, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите,пожалуйста,исправить ошибку..как сделать так,чтоб показывало именно то,что мне нужно?
PM MAIL   Вверх
source777
Дата 11.2.2011, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Код

<%= select_tag :faculty,options_for_select (@faculty.map {|p| [p.faculty,p.dean]})%>


В твоём случае, если пользователь выбирает из списка p.faculty, то :faculty получает значение p.dean. 

Это сообщение отредактировал(а) source777 - 11.2.2011, 22:57


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
RedAlliance
  Дата 11.2.2011, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вы правы..там именно декан..
а почему тогда вылезают ошибки как будто пусто?ведь тогда там декан,как минимум..
не подскажите,где почитать по селект_тэгу?я почему-то только на форумы натыкаюсь,где решаются конкретные проблемы тех пользователей,которые собственно задают вопрос..а на информацию по самому селект_тэгу не дают ссылок..
PM MAIL   Вверх
RedAlliance
  Дата 12.2.2011, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну неужели так сложно ответить,в чём дело и как стоит сделать,чтоб работало?
помогите,пожалуйста..
PM MAIL   Вверх
source777
Дата 12.2.2011, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Цитата(RedAlliance @  12.2.2011,  15:12 Найти цитируемый пост)
ну неужели так сложно ответить,в чём дело и как стоит сделать,чтоб работало?

ну неужели так сложно заглянуть в документацию? Меня всегда очень сильно удивляют люди, которые задают подобные вопросы на форумах и упорно ждут ответа, вместо того чтобы потратить ЦЕЛЫХ ДВЕ МИНУТЫ, чтобы прочитать описание хелпера.

P.S. Вопрос: почему ты используешь "f.label", но "select_tag+options_for_select" вместо "f.select"? И контрольный вопрос: а в чём собственно разница между f.label и label_tag, f.select и select_tag и т.д.?


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
RedAlliance
  Дата 12.2.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



никогда не слышала о label_tag..
до этого момента всегда использовала именно в таком виде:сначала f.label,потом select_tag без f-работало..
попробовала f.select сделать:
50:   <p>
51:     <%= f.label :faculty %><br />
52:     <%if not @faculty == nil %>
53:     <%= f.select ("faculty","faculty",@faculty.map{|p| [p.faculty,p.faculty]})%><span style="color:red">*</span><br />
54:   </p>
-говорит,что неопределён метод merge для массива..

если так:
<p>
    <%= f.label :faculty %><br />
    <%if not @faculty == nil %>
    <%= select_tag 'faculty',options_from_collection_for_select(@faculty,:faculty,:faculty) %><span style="color:red">*</span><br />
  </p>
то получаю:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.map

eсли так:
  <p>
    <%= f.label :faculty %><br />
    <%if not @faculty == nil %>
    <%= f.select ('faculty',options_from_collection_for_select(@faculty,:faculty,:faculty))%><span style="color:red">*</span><br />
  </p>
то не ругается и вносится в таблицу,но зато показывает с тэгами
<option value="Faculty of Maths">Faculty of Maths</option>
и с ними же вносится в таблицу..

 smile 


Это сообщение отредактировал(а) RedAlliance - 12.2.2011, 22:32
PM MAIL   Вверх
source777
Дата 12.2.2011, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

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



Цитата(RedAlliance @  12.2.2011,  21:08 Найти цитируемый пост)
до этого момента всегда использовала именно в таком виде:сначала f.label,потом select_tag

Почему? Чтобы что-то использовать надо понимать как это работает и чем отличается от альтернатив. Бездумное использование чего-либо в программировании ни к чему хорошему не приводит, зато конструкций типа "if not @faculty == nil" будет навалом. Я понимаю, что скорее всего ты пока пишешь одна и только для себя. Но подумай каково будет людям, если им придётся читать твой код...  
Вот несколько вариантов как на порядок улучшить хотя бы эту строчку:А если ты прочитаешь про методы .blank? и .present? будет ещё лучше!

Цитата(RedAlliance @  12.2.2011,  21:08 Найти цитируемый пост)
-говорит,что неопределён метод merge для массива..

правильно говорит, а ты судя по этой ошибке так и не поняла чем отличается f.label от label_tag

Цитата(RedAlliance @  12.2.2011,  21:08 Найти цитируемый пост)
никогда не слышала о label_tag..

Не торопись программировать, прочитай хоть Rails Guides для начала, в частности тебе сейчас очень актуальна статья Rails Form Helpers.


Цитата(RedAlliance @  12.2.2011,  21:08 Найти цитируемый пост)
 <%= f.select ("faculty","faculty",@faculty.map{|p| [p.faculty,p.faculty]})%>

По всей видимости твой вариант:
Код

<%= f.select(:faculty, @faculty.map{|p| [p.faculty, p.faculty.id]})%>

либо
Код

<%= f.select(:faculty, @faculty.map{|p| [p.faculty, p.id]})%>

Понять что-то в обрывках твоего кода просто невозможно... Что хранится в массиве @faculty, с какого перепуга массив называется в единственном числе? Что такое p.faculty объект типа Faculty или его название? 


Это сообщение отредактировал(а) source777 - 13.2.2011, 00:09


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
RedAlliance
Дата 21.2.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ошибка оказалась глупой..при создании сделала следующее:
Код
@user = User.new(params[:user])
    @user.faculty = params[:faculty]
    @user.group = params[:group]
    @user.save

до этого контроллер просто не знал,откуда брать для @user параметры faculty и group..

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

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

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


 




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


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

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