我已经做了一天多了,我希望有人可以帮助我。我是 ruby/rails 的新手,我想我已经接近了。
我有一个视图,而您可以输入有关公寓的基本信息,例如单元号、费率(如果已启用)。然后,您可以输入要创建的公寓数量。此信息被放入会话变量中,并显示预览表单。例如,如果您输入 5 作为您想要创建的公寓数量,您将在表格中获得 5 行,每行都有一个标题为 Unit Number、Rate 和 Enabled。然后,您可以根据需要对任何单个公寓进行修改,然后单击“保存”。
/app/models/apartment.rb
def preview
@count = session['count'].to_i
@mktg_apartment = []
1.upto(@count) do |i|
@mktg_apartment[i] = Apartment.new
@mktg_apartment[i].rate = session['tmp_rate']
@mktg_apartment[i].enabled = true
end
end
/app/views/preview.html.haml
=form_for @mktg_apartment, :url => {:action => 'save_preview', :method => 'post'} do
- 1.upto(@count) do |x|
text_field "mktg_apartment[#{x}]", :unit
text_field "mktg_apartment[#{x}]", :rate
text_field "mktg_apartment[#{x}]", :enabled
我还没有真正创建我的保存方法。我会拿出我所拥有的,在某一时刻它只会保存最后输入的记录,但我知道此时这一切都是错误的。
/app/model/apartment.rb
def save_preview
@mktg_apartment = Mktg::Apartment.new(params[:mktg_apartment])
respond_to do |format|
if @mktg_apartment.save
format.html { redirect_to mktg_apartments_path }
else
format.html { render action: "preview" }
end
end
end
在我的 preview.html.haml 表单中,我转储了 @mktg_apartment 并看到以下内容:
[nil, #<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>,
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>,
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>,
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>,
#<Mktg::Apartment id: nil, created_at: nil, updated_at: nil, unit: nil, rate: 1222.0, enabled: true>]
当我点击保存错误时,我看到以下参数被传递到我的帖子表单:
{"utf8"=>"✓",
"authenticity_token"=>"iGLdu/ZmulcLp4xZEU4a4iuxWV1opzNIyXcnZEQCtj8=",
"mktg_apartment"=>{"1"=>{"unit"=>"",
"rate"=>"",
"enabled"=>"0"},
"2"=>{"unit"=>"",
"rate"=>"",
"enabled"=>"0"},
"3"=>{"unit"=>"",
"rate"=>"",
"enabled"=>"0"},
"4"=>{"unit"=>"",
"rate"=>"",
"enabled"=>"0"},
"5"=>{"unit"=>"",
"rate"=>"",
"enabled"=>"0"}},
"commit"=>"Save",
"method"=>"post"}
所以看起来我在我的预览方法中设置的@mktg_apartment 数组在我的预览视图中没有被正确访问。它实际上看起来像我的预览视图正在将参数传递给我期望的 save_preview post 方法。
请任何帮助,我正在用头撞墙。谢谢...