используйте RJS для чтения значений - PullRequest
0 голосов
/ 17 декабря 2010

Я хочу использовать значение входного тега в rjs

для:

<%= button_to_function "add tag" do |page|
page.insert_html :bottom, :selected_tags, :partial => 'tag', :object => Tag.new(:name => "#{page[:tag_name].value}" )
 end %>

Но выдается предупреждение:

RJS error:

TypeError: $("tag_name").value is not a function

Есть лиспособ использовать синтаксис rjs для чтения значений элементов тега?

Ответы [ 2 ]

2 голосов
/ 17 декабря 2010

Подождите секунду:

<%= button_to_function "add tag" do |page|
page.insert_html :bottom, :selected_tags, :partial => 'tag', :object => Tag.new(:name => "#{page[:tag_name].value}" )
 end %>

button_to_function и page.insert_html происходят, когда страницы визуализируются (создание объектов, рендеринг и т. Д.). Когда пользователь нажимает кнопку, происходит только фактическая вставка.

Я бы посоветовал вам:

  1. используйте link_to_remote или form_to_remoe (t
  2. затем создайте объект Tag в действии на стороне сервера и отредактируйте частичный
  3. отправьте его обратно клиенту и добавьте в список selected_tags с помощью rjs (обновление страницы обновления)

Приветствие Рето

1 голос
/ 17 декабря 2010

@ reto верно, вы должны различать стороны клиента и сервера. JS, сгенерированный в блоке link_to_button, будет выполнен на клиенте, но частичное отрисовывается на сервере , поэтому ваш код не сможет работать.

Предложенный вариант link_to_remove прост в реализации, но его можно улучшить, поскольку вы будете подключать сервер к чему-то, что вы уже знаете при рендеринге представления. Не бойтесь JavaScript и:

  • сервер: отправьте шаблон HTML
  • клиент: подставлять значения при нажатии кнопки
  • клиент: вставьте новый HTML-блок в контейнер.

Есть много способов сделать это, поиграйте с этим, чтобы понять это.

...