编辑表单提交到错误的URL和远程:true未能被提取

时间:2013-06-25 07:42:50

标签: ruby-on-rails ruby-on-rails-3 forms simple-form

这让我疯狂,因为它似乎没有任何意义。

我想做一些比较简单的事。

在索引页面的模板中显示编辑表单。

我有以下代码循环遍历一组网站

<%= render(@sites) %>
<%= will_paginate @sites %>

在网站内部分我隐藏了以下表格

<%= simple_form_for site, remote: true do |f| %>
  <%= f.input :name %>
  <%= f.input :matter  %>
  <%= f.submit "Save", :class => "button gr thirt", id: "site_save" %>
<% end %>

而不是生成预期的HTML我得到以下内容,链接到show动作,我错过了一些基本的东西吗?

<form accept-charset="UTF-8" action="/sites/1" class="simple_form edit_site" data-remote="true"  method="post" novalidate="novalidate">
</form>

1 个答案:

答案 0 :(得分:1)

我正在遍历@sites的集合,通过调用Site.all返回的结果 因此,提供给上述表单的对象是@sites

中包含的| site |之一

如果您使用从数据库检索的对象或者像Site.new这样的“新记录”对象提供form_for表单,它将自动区分和修改创建和更新操作之间的路由等。

form_for无法识别@sites块中包含的站点对象。因此,通过ajax请求编辑的快速重要因素,以及通过编辑操作(@site = Site.find(params [:id])创建的实例变量提供的表单是form_for帮助程序可识别的,并且意味着提交行动,相应调整到正确的路线。