【问题标题】:Unable to get values from view to controller无法从视图获取值到控制器
【发布时间】:2012-03-26 19:52:04
【问题描述】:

我对新表单的看法是

<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] 的值放入创建控制器。当我尝试检查 puts params[:form3c] 时,它显示为空白。任何人都可以帮助我哪里错了

【问题讨论】:

  • 您是否尝试过params[:form3_c]?查看您的 development.log 文件,您应该在提交表单时看到实际参数哈希的完整输出。

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


【解决方案1】:

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

您可以在 Rails 控制台中使用 #underscore 进行检查:

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

我想你已经将你的类命名为 Form3C,正如 Dylan 建议的那样,它变成了 form3_c。

您可能需要考虑将您的模型重命名为 BasicCase 和 Form3c,这应该会为您提供参数 basic_case_id 和 form3c。

【讨论】:

  • 正如 Dylan 建议的那样 params[:form3_c] 有效。谢谢解释
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多