使用rjs来读取值

时间:2010-12-17 12:23:35

标签: ruby-on-rails ruby rjs

我想在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 个答案:

答案 0 :(得分:2)

等一下:

<%= 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在页面被渲染(对象创建,渲染等)时发生。当用户单击按钮时,只会发生实际的INSERT。

我建议你:

  1. 使用link_to_remote或form_to_remoe(t
  2. 然后在服务器端的操作中创建Tag对象,并渲染部分
  3. 将其发送回客户端并通过rjs将其添加到selected_tags列表(渲染更新执行页面)
  4. 干杯 雷托

答案 1 :(得分:1)

@reto是对的,你必须区分客户端和服务器端。 link_to_button块中生成的JS将在客户端执行,但部分在服务器上呈现,因此您的代码无法正常工作。

提出的link_to_remove选项很容易实现,但可以改进,因为您将连接服务器以获取呈现视图时已知的内容。不要害怕JavaScript和:

  • 服务器:发送HTML模板
  • 客户端:按下按钮时替换值
  • client:在容器中插入新的HTML块。

有许多方法可以实现这一点,稍微用它来解决它。