2012-03-25 48 views
0

我認爲新形式無法從視圖中獲取值到控制器

<h1>Add Form 3C </h1> 
<%= form_for([@basiccase, @form3c]) do |f| %> 
    <%= render 'shared/error_messages', :object => f.object %> 

    <div class="field"> 
     <%= f.label :date_of_investigation %> 
     <%= f.date_select :date_of_investigation, {:include_blank => true, :default => nil} %> 
     </div> 
<div class="actions"> 
     <%= f.submit "Add Form" %> 
    </div> 

<% end %> 

我對新的控制器和創造是

def new 
    @title = "New Form 3C" 
    @basiccase = Basiccase.find_by_id(params[:basiccase_id]) 
    @form3c = @basiccase.build_form3_c 
    end 

    def create 
    @basiccase = Basiccase.find_by_id(params[:basiccase_id]) 
    @form3c = @basiccase.build_form3_c(params[:form3c]) 
      if @form3c.save 
      flash[:success] = "Form created!" 
      redirect_to current_user 
      else 
      flash[:warning] ="Failed to create a Form" 
      render 'users/show' 
      end 
    end 

我拿不到則params的值:form3c]到創建控制器中。當我試圖檢查puts params [:form3c]時,它顯示爲空白。可以任何幫助我,我錯了

+0

你試過'PARAMS [:form3_c]'呢?看看你的development.log文件,當你提交表單時你應該看到實際的params散列的完整輸出。 – 2012-03-26 00:15:49

回答

1

params鍵將根據您的類名稱。 Rails希望類名混合使用(例如BasicCase),並通過使用下劃線對單詞進行縮小和分隔來創建參數鍵。

您可以在Rails控制檯中使用#underscore檢查:

1.9.2p290 :001 > "BasicCase".underscore 
=> "basic_case" 

我想你命名你的類Form3C成爲form3_c作爲迪蘭建議。

你可能想考慮將你的模型重命名爲BasicCase和Form3c,它們應該給你params basic_case_id和form3c。

+0

Dylan建議params [:form3_c]工作。感謝您的解釋 – 2012-03-26 14:43:36

0

檢查您的控制檯或development.log,點擊「添加表單」後。

不確定確切的,但你會發現參數是這樣的:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"...", "basiccase"=>{"form3c" => {"email"=>"asdsa", "password"=>"[FILTERED]", "remember_me"=>"0"}}} 

然後使用PARAMS [:basiccase] [:form3c]

相關問題