你可以动态改变轨道形式的红宝石吗?

时间:2013-05-07 01:57:44

标签: ruby-on-rails

我有一个表单,我在一个页面中用作远程表单,并希望将表单重用于另一个页面而不是远程表单。在一种情况下使其远程而在另一种情况下不是远程的最简单方法是什么?在我不希望表单是远程的情况下,表单是唯一显示特定URL的表单。在另一种情况下,表单嵌入在一个更复杂的结构中,我在那里工作的远程功能。我只需要提交按钮来请求HTML响应而不是javascript响应。提前谢谢!

2 个答案:

答案 0 :(得分:3)

有两种方法:

1:使用jQuery禁用远程方法

您可以使用jQuery“禁用”远程表单。这是一个双命令过程,您需要按顺序执行:

$('form#form_id').removeAttr('data-remote');
$('form#form_id').remoteData('remote');

2:使用Rails partials&变量

为表单创建一个部分(如果已经不存在)。表单助手看起来像这样

form_for @object, remote: remote

然后,使用<%= render partial: 'form', locals: { remote: true } %><%= render partial: 'form', locals: { remote: false } %>

调用部分内容

答案 1 :(得分:1)

您将表单提取到以下划线开头的部分新文件,例如_my_form.html.erb:

<%= form_for @resource, url: url, remote: remote do %>
  ...
<% end %>

你在两个文件中使用它:像这样:

使用url1:

使其远程
<%= render partial: 'my_form', locals: { url: 'url1', remote: true } %>

使用url2使其非远程:

<%= render partial: 'my_form', locals: { url: 'url2', remote: false } %>

注意'my_form'将根据您保存的部分文件夹。例如,如果您保存在shared文件夹中,则会使用'shared/my_form'