【发布时间】:2015-01-17 06:08:55
【问题描述】:
我基本上遵循本教程:http://www.gotealeaf.com/blog/the-detailed-guide-on-how-ajax-works-with-ruby-on-rails 有一个变化:在为“任务”(控制器、模型、视图...)创建脚手架之后,我创建了一个名为“demo”的新控制器,以测试 ajax 方式。所以“演示”控制器有以下动作:index、new_task、create_task、edit_task、update_task。路线也调整了。
当我呈现表单时 (app/views/demo/_form.html.erb)
<%= simple_form_for @task, remote: true do |f| %>
<%= f.input :description %>
<%= f.input :deadline %>
<%= f.button :submit %>
<% end %>
'action' 的形式将是 '/tasks',对应于 'controller:tasks, action:create',但该控制器用于“旧 html”方式,而 ajax 内容位于“demo”控制器中.
所以,根据网上找到的一些答案,我添加了“url”参数:
<%= simple_form_for @task, remote: true, url: '/demo/create_task' do |f| %>
<%= f.input :description %>
<%= f.input :deadline %>
<%= f.button :submit %>
<% end %>
在这种情况下,它适用于“新建/创建”操作。但是当需要更新模型时,它应该使用“/demo/update_task”路径。 Rails 用哪种方式来处理这个问题?
在表单前添加一行:
有两种不同的表单,一种用于创建,另一种用于编辑,因此“new_task.js.erb”将指向“_form_for_creating.html.erb”,“edit_task.js.erb”将指向另一个一。实际上不是很干。
更丑陋的:: 让 'tasks' 控制器重定向到 'demo' 控制器中的 'update_task'。我不会依赖这个,因为任务控制器应该在一些测试后被删除。
【问题讨论】:
标签: javascript ruby-on-rails ajax