Выберите onchange не пишется - PullRequest
       2

Выберите onchange не пишется

6 голосов
/ 02 февраля 2011

Rails 2.3.5, Ruby 1.86

Я не смог понять это.«Onchange» в списке ниже не пишется (onchange не написано в HTML).Я не видел ссылки на синтаксис, отличающийся за исключением того, что в некоторых старых примерах onchange заключен в квадратные скобки:

<%= f.select :directory_id, options_for_select(@directories, @directory_to_select), :onchange => 'folder_lookup()' %>

приводит к:

<select id="contact_directory_id" name="contact[directory_id]">
<option value="2">test_1</option>
<option value="4">test_2</option>
<option value="33" selected="selected">test_3</option>
</select>

Если я просто изменю "f.select" на "select_tag", онджен будет написан правильно (хотя я не хочу этого делать):

<%= select_tag :directory_id, options_for_select(@directories, @directory_to_select), :onchange => 'folder_lookup()' %>

приведет к:

<select id="contact_directory_id" name="directory_id" onchange="folder_lookup()">
<option value="2">test_1</option>
<option value="4">test_2</option>
<option value="33" selected="selected">test_2</option>
</select>

Мне не хватает синтаксической разницы для обмена между помощником select и select_tag?

Спасибо!

1 Ответ

23 голосов
/ 02 февраля 2011

Это то, что вы хотите:

<%= f.select :directory_id, options_for_select(@directories, @directory_to_select), {}, :onchange => 'folder_lookup()' %>

При выборе метода подпись выглядит следующим образом select(object, method, choices, options = {}, html_options = {}). onchange - это html_option, так как у вас нет никаких опций, вам нужен пустой хеш, чтобы ваш последний обмен был принят за html_option.

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