Javascript 轨道&x2B;简单形式+;远程#u true+;自定义控制器:如何处理';新';和';编辑';?
我基本上遵循本教程: 有一个变体:在为“任务”(控制器、模型、视图……)创建了一个脚手架之后,我创建了一个名为“demo”的新控制器,以测试ajax方式。因此,“演示”控制器具有以下操作:索引、新建任务、创建任务、编辑任务、更新任务。路线也进行了调整 当我呈现表单时(app/views/demo/_form.html.erb)Javascript 轨道&x2B;简单形式+;远程#u true+;自定义控制器:如何处理';新';和';编辑';?,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我基本上遵循本教程: 有一个变体:在为“任务”(控制器、模型、视图……)创建了一个脚手架之后,我创建了一个名为“demo”的新控制器,以测试ajax方式。因此,“演示”控制器具有以下操作:索引、新建任务、创建任务、编辑任务、更新任务。路线也进行了调整 当我呈现表单时(app/views/demo/_form.html.erb) 表单'action'将是'/tasks',对应于'controller:tasks,action:create',但该控制器是用于“旧html”方式的,而ajax内容
表单'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\u task”路径。Rails采用哪种方式处理此问题
我最终选择在表单前添加一行:
<% url = @task.new_record? ? "/demo/create_task" : "/demo/update_task?id=#{@task.id}" %>
<%= simple_form_for @task, remote: true, url: url do |f| %>
<%= f.input :description %>
<%= f.input :deadline %>
<%= f.button :submit %>
<% end %>
我觉得它不完美,但很管用
当然,有一些事情需要调整:
- 添加路线
补丁“演示/更新任务”
- 演示控制器中的
应在更新属性后加载所有任务update_task
=simple\u form\u,url:url\u(控制器:“演示”,操作:“创建”),方法:“post”do | form |
<% url = @task.new_record? ? "/demo/create_task" : "/demo/update_task?id=#{@task.id}" %>
<%= simple_form_for @task, remote: true, url: url do |f| %>
<%= f.input :description %>
<%= f.input :deadline %>
<%= f.button :submit %>
<% end %>