当我创建滑动时,我正在尝试获取用户输入的值,以便我可以多次创建该记录。
_form.html.erb中的是我所有代码所在的位置。在new.html.erb中我用以下方式调用表单:
<%= render 'form' %>
以下是我尝试访问的表单代码:
<%= f.label :skid_count %>
<%= f.number_field :skid_count, :value => '1', :required => 'required', :pattern => ValidationValues.c_integer, :placeholder => ValidationValues.p_integer %>
在控制器中我试图这样做:
def create
@skid = Skid.new(params[:skid])
count = params[:skid_count].to_i
# Create record in the database, and return an appropriate message
respond_to do |format|
if @skid.save
for i in 1..count
Skid.new(params[:skid]).save
end
format.html { redirect_to @skid, notice: 'Skid was successfully created.' }
format.json { render json: @skid, status: :created, location: @skid }
else
format.html { render action: "new" }
format.json { render json: @skid.errors, status: :unprocessable_entity }
end
end
end
由于某种原因,count变量没有提取数字,如果我硬编码并将3放在那里,它会按预期创建4次记录,但是如果我尝试根据什么得到数值用户输入,如上所示,它不起作用。它每次只创建1条记录。
我无法访问该参数吗?
答案 0 :(得分:0)
看起来您在记录保存之前设置变量,因此没有记录可以在该点设置变量。如果你将线向下移动几个空格,它应该可以工作。
def create
@skid = Skid.new(params[:skid])
# Create record in the database, and return an appropriate message
respond_to do |format|
if @skid.save
count = params[:skid_count].to_i # if the record saves, create variable with the new params
for i in 1..count # do your magic
Skid.new(params[:skid]).save
end
答案 1 :(得分:0)
我通过以这种方式从属性中获取值来解决这个问题:
count = params[:skid]["skid_count"]
我希望这有助于其他人偶然发现同样的问题。
答案 2 :(得分:0)
我会扩展你的答案来解释原因。
当您通过form_for帮助程序构建字段时,它会自动将其范围限定在param哈希中的模型属性下。
params[:skid][:skid_count]
也可以正常使用
如果你希望:skid_count
在params散列之外(为了不在较新版本的rails中触发禁用属性,你可以只使用number_field_tag(:skid_count)
来构建它,它们可用于您的控制器为params[:skid_count]