Ruby on rails Post方法期间Rails丢失参数

Ruby on rails Post方法期间Rails丢失参数,ruby-on-rails,Ruby On Rails,我有一个表单,我不知道有多少文本字段。对于表/表单中的每一行,都有文件的基本名称,它旁边有一个隐藏字段,以便将其与两个文本字段一起传入,参数[:lots[key][lot\u number][:low\u range][:high\u range] 一旦我到了控制器,我只有原来8组字段中的2-3组是在哪里产生的。我不知道为什么这些其他字段会被抛在后面 我试着用15+个字段来做,但每次仍然只能得到5-7个批次 我得到的信息是正确的,格式也是正确的。我只是总是错过了@video\u filename

我有一个表单,我不知道有多少文本字段。对于表/表单中的每一行,都有文件的基本名称,它旁边有一个隐藏字段,以便将其与两个文本字段一起传入,
参数[:lots[key][lot\u number][:low\u range][:high\u range]

一旦我到了控制器,我只有原来8组字段中的2-3组是在哪里产生的。我不知道为什么这些其他字段会被抛在后面

我试着用15+个字段来做,但每次仍然只能得到5-7个批次

我得到的信息是正确的,格式也是正确的。我只是总是错过了
@video\u filenames
循环中呈现的一半以上的片段

视图:

:post do%>
洛茨
子批次创建
控制器:

def mass_create_from_media  
    @event = Event.find(params[:event_id])
    lots = params[:lots]
    abort(params.to_s)
    errors = []

    lots.each do |key , lot|
        if @event.lots.where(:number => lot[:lot_number]).empty?
            new_lot = @event.lots.new(:number => lot[:lot_number], :start_at => Time.now, :end_at => Time.now + 1.hour)

            if !new_lot.save
                errors << new_lot.errors.full_messages
            else
                if lot[:low_range].present? && lot[:high_range].present?
                    index = lot[:low_range]
                    while lot[:high_range].to_i >= index.to_i
                        sub_lot = @event.lots.new(:number => lot[:lot_number] + '-' + index.to_s, :start_at => Time.now, :end_at => Time.now + 1.hour)
                        index = index.to_i + 1
                        sub_lot.save
                    end
                end
            end
        end
    end

    if errors.present?
        flash[:error] = "Errors creating lots: #{errors.join(', ')}"
    else
        flash[:success] = "Lots successfully created"
    end

    redirect_to mass_new_admin_event_lots_path(@event)
end 
def mass\u从媒体创建
@event=event.find(参数[:event\u id])
批次=参数[:批次]
中止(参数至)
错误=[]
很多。每个都做|钥匙,很多|
如果@event.lots.where(:number=>lot[:lot\u number])。为空?
new_lot=@event.lots.new(:number=>lot[:lot_number],:start_at=>Time.now,:end_at=>Time.now+1.hour)
如果!新的批。保存
错误=index.to_i
sub_lot=@event.lots.new(:number=>lot[:lot_number]+'-'+index.to_s,:start_at=>Time.now,:end_at=>Time.now+1.hour)
index=index.to_i+1
分包保存
结束
结束
结束
结束
结束
如果存在错误?
flash[:error]=“创建批时出错:#{Errors.join(',')}”
其他的
flash[:success]=“已成功创建批次”
结束
重定向到mass\u new\u admin\u event\u lots\u路径(@event)
结束
HTML输出:

<input id="lots_1369421745.947125_lot_number" name="lots[1369421745.947125][lot_number]" type="hidden" value="101z">

<input id="lots_1369421745.947125_lot_number" name="lots[1369421745.947125][lot_number]" type="hidden" value="115z">

<input id="lots_1369421745.947125_lot_number" name="lots[1369421745.947125][lot_number]" type="hidden" value="161z">

<input id="lots_1369421745.948125_lot_number" name="lots[1369421745.948125][lot_number]" type="hidden" value="20z">

<input id="lots_1369421745.948125_lot_number" name="lots[1369421745.948125][lot_number]" type="hidden" value="20z">

<input id="lots_1369421745.948125_lot_number" name="lots[1369421745.948125][lot_number]" type="hidden" value="47z">

<input id="lots_1369421745.948125_lot_number" name="lots[1369421745.948125][lot_number]" type="hidden" value="87z">

<input id="lots_1369421745.948125_lot_number" name="lots[1369421745.948125][lot_number]" type="hidden" value="rock_on">

文本输入:

<input id="lots_1369421745.948125_high_range" name="lots[1369421745.948125][high_range]" type="text">

<input id="lots_1369421745.948125_low_range" name="lots[1369421745.948125][low_range]" type="text">

问题是
没有生成uniq键。正如您在html中看到的,键
1369421745.947125
1369421745.948125
重复

因此,您必须更改“算法”以生成uniq密钥。

我将
更改为

试试这个

<% @video_filenames.reject(&:blank?).uniq.each_with_index do |filename, index| %>

                        <% basename = File.basename(filename, '.*') %>

                        <tr>
                            <td><%= basename %><%= hidden_field_tag "lots[#{index}][lot_number]", basename %></td>
                            <td><%= text_field_tag "lots[#{index}][low_range]" %> <%= text_field_tag "lots[#{index}][high_range]" %></td>
                        </tr> 
                    <% end %>
                <% end %>


你能粘贴服务器日志输出吗?我为你发布了它。当帖子被调用时,在完成后立即使用Chrome web inspector或Firebug,确保你的8个文本和隐藏字段的名称正确。例如,
。我发现问题在于密钥不是唯一的,因为它的处理速度太快,所以它得到的是相同的Ti我盖章。有没有其他方法来获取唯一密钥的想法?谢谢。我经常遇到让事情变得比需要的更困难的问题。我需要记住利用索引。谢谢,我现在将代码更改为:)
<% @video_filenames.reject(&:blank?).uniq.each_with_index do |filename, index| %>

                        <% basename = File.basename(filename, '.*') %>

                        <tr>
                            <td><%= basename %><%= hidden_field_tag "lots[#{index}][lot_number]", basename %></td>
                            <td><%= text_field_tag "lots[#{index}][low_range]" %> <%= text_field_tag "lots[#{index}][high_range]" %></td>
                        </tr> 
                    <% end %>
                <% end %>