【问题标题】:Append form partial in the new view of the same model in rails在rails中相同模型的新视图中附加表单部分
【发布时间】:2013-01-23 15:53:32
【问题描述】:

我想使用相同的模型在一个视图 (new.erb.html) 中通过一次提交一次创建更多记录。

例如,我有一个名为 Report 的模型,其中包含一些字段,例如标题、描述和日期

当我单击添加按钮时,如何多次渲染相同的表单?我认为这不是嵌套模型的问题,因为始终是相同的模型动作。 谢谢

【问题讨论】:

  • 嗯,也许我没有很好地理解你的问题,但你到底想做什么?你使用 js 来追加那些表单吗?
  • 是的,我想使用 jquery,并且我想管理数组以创建相同模型的控制器操作
  • 因此,您可以使用 JQuery 的追加添加任意数量的表单,并且它们不必不同:只需使用 Khustochka 的提示'bout model[][name] 名称即可。

标签: ruby-on-rails forms view model


【解决方案1】:

你可以这样做(我自己没有测试过代码):

哈姆:

.model
  %input{:name => "model[][name]"}
  %input{:name => "model[][desc]"}
  %input{:name => "model[][date]"}
.container
%button.add-model

js:

$('.add-model').click(function(){
  $('.model').clone().first().appendTo('.container');
})

控制器:

def save
   params[:model].each do |props|
     Model.create(props)
   end
end

【讨论】:

  • 好的,谢谢,我正在研究这个解决方案,但我不使用haml,我使用支持SimpleForm gem 的html,你知道如何使用格式模型更改输入名称[][姓名]?
  • 我不确定 SimpleForm 是否有帮手来制作像“model[][name]”这样的名称。你能明确地指定名称吗?类似 f.input :name, :name => "model[][name]"?
  • 是的,它适用于 :input_html => "model[][name]" 没有帮助程序,现在 javascript 工作正常但创建操作不起作用,它只保存最后的输入
  • 这里开始调试:看看 params[:model] 中到底有什么,有多少元素?您必须确保整个表单数据都到达控制器。您也可以在浏览器中使用网络控制台。
【解决方案2】:

我所做的是使用 JavaScript (jQuery) - 在页面加载时,我将唯一呈现的表单保存到 JS 变量中(实际上不是表单,而是其中的输入),然后单击“添加更多”链接附加更多输入进入表格。

要一次保存多个对象,您将需要手工输入名称(类似于 model[][name] 以发送值数组),以及接受数组的控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多