我傳入:number作爲參數,然後將其分配給控制器中的變量@test_suite_num before_filter
。Ruby On Rails:使用創建控制器函數中新控制器函數的參數
在我的控制器中的new
函數中,我使用變量@test_suite_num過濾名爲Test
的表以獲取其ID與@test_suite_num相匹配的條目數。我使用此計數來生成適當數量的子資源test_run
。
我對create
做了同樣的事情,但由於某些原因,只要我在依賴@test_suite_num
的表單中使用這些變量,就會得到零錯誤。我假設由於創建永遠不會接受一個參數,變量永遠不會被初始化。我如何在create
函數中使用@test_suite_num?
控制器代碼:
before_filter :get_number, :only => [:new, :create]
def get_number
@test_suite_num = params[:number]
end
新
def new
@test_suite_run = TestSuiteRun.new
@tests = Test.find(:all, :conditions => { :test_suite_id => @test_suite_num })
@tests.count.times do test_run = @test_suite_run.test_runs.build end
end
創建
def create
@test_suite_run = TestSuiteRun.new(params[:test_suite_run])
@tests = Test.find(:all, :conditions => { :test_suite_id => @test_suite_num })
@tests.count.times do test_run = @test_suite_run.test_runs.build(params[:test_suite_run]) end
if @test_suite_run.save
flash[:success] = "Run Added Succesfully"
redirect_to test_suite_runs_path(@test_suite_run)
else
render 'new'
end
end
編輯:
我只是用回報率,所以我的風格是非常的混亂開始。但是我的問題依然存在。我的問題是,在我的形式,我使用@tests,這與我通過在參數初始化我可以查看的形式就好了,但是當我點擊提交,我得到:
Showing /Users/vsp/Documents/rails_projects/web_db/app/views/test_suite_runs/_form.html.erb where line #13 raised:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Extracted source (around line #13):
10:
11: <%= f.fields_for :test_runs do |builder| %>
12:
13: Test <%= @tests[@i].id %><br><br>
14:
15: <%= render "partial", :f => builder %>
16: <hr>
顯然,這手段創建控制器沒有得到參數[:數字],因此表單提交休息。我的創建函數有什麼問題嗎?
PARAMS:{ 「UTF8」=> 「✓」, 「authenticity_token」=> 「/ vbOcFozTEAvoa03OUBfyxJbJ9AQp8m8yA04LkxlRE8 =」, 「test_suite_run」=> { 「test_runs_attributes」=> { 「0」=> {「爲test_id 「=>」1「,」machine_id「=>」「,」date「=>」2012-07-09 15:59:53 -0700「,」status「=>」「,」result「=>」「 },「1」=> {「test_id」=>「3」,「machine_id」=>「」,「date」=>「2012-07-09 15:59:53 -0700」,「status」=> 「」,「result」=>「」},「2」=> {「test_id」=>「6」,「machine_id」=>「」,「date」=>「2012-07-09 15:59: 53 -0700「,」status「=>」「,」result「=>」「},」3「=> {」test_id「=>」7「,」machine_id「=>」「,」date「=> 「2012-07-09 15:59:53 -0700」,「status」=>「」,「result」=>「」}},「date」=>「2012-07-09 15:59:53 - 0700「},」commit「=>」Submit「,」action「=>」create「,」controller「=>」test_suite_runs「}
通過此查看,它只是我窗體中的所有text_input字段。
你可以做一個'把params.to_s'在頂部用創造行動?該視圖仍然失敗,但服務器將在服務器日誌中顯示參數 – varatis 2012-07-09 22:50:17