我在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
});
这一切都很棒。但是我有两个问题(首先是我的主要问题):
我如何得到它,以便不使用'here here'更新div,而是使用表单元素更新它,即表单标签,标签,文本框和“提交”更改的按钮。我们的想法是,用户可以在页面上就地编辑此字段。
我应该在哪里放置我的JS。我目前在application.js中有它并使用window.onLoad运行该函数...是唯一的方法吗?我是这么认为的,否则就会发现它无法找到元素!
全部谢谢!
答案 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文件,并将其包含在该资源的布局中。如果该资源不使用布局,我认为您仍然可以在视图中包含它。