不引人注目的JS Ruby on Rails,onclick用表单元素替换div内容

时间:2010-11-01 11:30:37

标签: javascript ruby-on-rails unobtrusive-javascript

我在div标签中有一段简单的文字如下:

<div id="text">Value 
<a href="/actual/link/incase/user/has/JS/turned/off" id="change_value"/>
</div>

然后我有这个javascript

$('change_value').observe('click', function(event){
  $("text").update("something here!");
  event.stop(); // Prevent link from following through to its given href
});

这一切都很棒。但是我有两个问题(首先是我的主要问题):

  1. 我如何得到它,以便不使用'here here'更新div,而是使用表单元素更新它,即表单标签,标签,文本框和“提交”更改的按钮。我们的想法是,用户可以在页面上就地编辑此字段。

  2. 我应该在哪里放置我的JS。我目前在application.js中有它并使用window.onLoad运行该函数...是唯一的方法吗?我是这么认为的,否则就会发现它无法找到元素!

  3. 全部谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你最好的选择是观看钢轨演员#196和#197:

http://railscasts.com/episodes/196-nested-model-form-part-1

http://railscasts.com/episodes/197-nested-model-form-part-2

这些演员表解释了如何以表格形式创建嵌套模型(3级); part2专注于javascript部分,用于添加和删除等操作。

观看效果很好。

答案 1 :(得分:0)

问题1:您可以对您需要的任何控制器/操作进行AJAX调用。您的控制器将获取您正在寻找的对象,然后发送一个js.erb模板。 js.erb模板可以这样做:

$('#change_value').update('<%= render :partial => @object %>');

然后,您对该对象类型的部分将包含您需要的表单。在各种Railscasts剧集中,这种方法还有很多。第136集有很好的例子但使用jQuery,所以你必须使它适应Prototype语法(虽然如果你还没有尝试过jQuery,我建议给它一个镜头)。第235集有很多关于UJS的好东西,并展示了jQuery和Prototype的例子。

问题2:不,它不必进入application.js。您可以创建特定于该资源的另一个js文件,并将其包含在该资源的布局中。如果该资源不使用布局,我认为您仍然可以在视图中包含它。