2007-10-08

Rails宝典之七十四式:复杂表单Part2

关键字: Rails Complex Form
这次来看看如何使用JavaScript和RJS来动态添加和删除表单域:

继续上次的例子,我们首先要在layout里引入Prototype.js
<%= javascript_include_tag :defaults %>


然后是新建project的页面模板:
<div id="tasks">
  <%= render :partial => 'task', :collection => @project.tasks %>
</div>
<p><%= add_task_link "Add a task"%></p>


这里add_task_link是我们在projects_helper.rb里添加的一个helper方法:
def add_task_link(name)
  link_to_function name do |page|
    page.insert_html :bottom, :tasks, :partial => 'task', :object => Task.new
  end
end

这里用到RJS的insert_html

然后看看一个partial页面模板_task.rhtml:
<div class="task">
<% fields_for "project[task_attributes][]", task do |task_form| %>
  <p>
    Task: <%= task_form.text_field :name %>
    <%= link_to_function "remove", "this.up('.task').remove()" %>
  </p>
<% end %>
</div>

这里用到Prototype.js里的up方法查找上一个class为task的div
评论
发表评论

您还没有登录,请登录后发表评论

hideto
搜索本博客
我的相册
A6bdc31c-c66e-468e-961e-9cc721e82adc-thumb
screenshot
共 1 张
存档
最新评论