无法从视图获取值到控制器

时间:2012-03-25 22:07:36

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我对新表单的看法是

<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 %>

我的new和create控制器是

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]的值输入到create控制器中。当我试图检查put params [:form3c]时,它显示为空白。 Can Any帮助我,我错了

2 个答案:

答案 0 :(得分:1)

params键将基于您的班级名称。 Rails期望类名是大小写混合的(例如BasicCase),并通过使用下划线小写和分隔单词来创建param键。

您可以使用#underscore:

在Rails控制台中进行检查
1.9.2p290 :001 > "BasicCase".underscore
 => "basic_case" 

我想你已经将你的类命名为Form3C,它就像Dylan建议的那样成为form3_c。

您可能需要考虑将模型重命名为BasicCase和Form3c,它们应该为您提供params basic_case_id和form3c。

答案 1 :(得分:0)

点击“添加表单”后,检查您的控制台或development.log。

不确定确切,但你会发现类似的参数:

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

然后使用params [:basiccase] [:form3c]