0

我在 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. 我如何得到它,而不是用“这里的东西”更新 div,而是用表单元素更新它,即表单标签、标签、文本框和“提交”更改的按钮。这个想法是用户将能够在页面上就地编辑此字段。

  2. 我应该在哪里实际放置我的 JS。我目前在 application.js 中拥有它并使用 window.onLoad 运行该函数......这是唯一的方法吗?我假设是这样,否则它会抱怨它找不到元素!

谢谢大家!

4

2 回答 2

0

我认为你最好的选择是观看 rails casts #196 和 #197 :

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

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

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

很好的观赏性。

于 2010-11-01T14:13:57.363 回答
0

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

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

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

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

于 2010-11-01T21:33:52.923 回答