rails 4在同一表单上的多个父对象下发布多个子对象

时间:2014-06-05 12:22:20

标签: ruby-on-rails

我使用名为main的父模型和名为temperature的子模型嵌套资源。每个主要可以有许多温度(1到多个)。有没有办法使用form_for和fields_for在一个表单上发布多个温度,每个温度转到不同的主要对象(我想只有一个提交按钮)?以下是我的主要索引视图和主要&温度控制器。谢谢!

<% @mains.each do |main| %>
<tr>
  <td>stuff.....</td>
  <td><%= form_for main do |f| %>
    <%= f.fields_for :temperature do |t| %>
      temp: <%= t.text_field :temp %>
    <% end %>
  <% end %></td>
</tr>
  
class MainsController < ApplicationController
#stuff

def index
    @mains = Main.all
end

private 
    def main_params
        params.require(:main).permit(:freezer_id, :freezer_name, temperatures_attributes: [:id, :main_id, :temp, :date])
    end
end

class TemperaturesController < ApplicationController
#stuff
def create
    @main = Main.find(params[:main_id])
    logger.debug 'testing 1'
    @temp = @main.temperatures.create(temperature_params)
    if @temp.save
        redirect_to main_path(@main)
    else
        render 'mains/show'
    end

end


private
    def temperature_params
        params.require(:temperature).permit(:temp, :date)
    end
end

1 个答案:

答案 0 :(得分:0)

您要做的是在数据库上针对不同的主电源进行批量更新/创建。只要require(param)正在执行,Rails就无法在其约定上处理此问题。您需要在控制器中创建一个批量处理程序,以便从数组中的每个权限创建单个哈希值,然后为每个模型验证的响应创建一个处理程序。 不容易做,但可能。 对于APIS,有些引用没有表单,但只要视图创建了适当的哈希,就可以重用它。

http://www.l1ghtm4n.com/post/53259404576/patterns-for-rest-api-bulk-operations

https://github.com/arsduo/batch_api

http://forrst.com/posts/Run_any_rails_RESTful_action_more_than_once_bul-Yb5