Ruby on Rails:number_field / text_field不保存值

时间:2014-05-06 22:18:10

标签: ruby-on-rails database forms

我在保存表单值方面遇到了一个小问题。我做了一个更新一些数据库值的表单,我遇到了一个特殊的问题。

我为几个项目创建了3个变量,这里是表单中的前3个。

follow_up_logs / edit.html.erb

<div id="followuplog_attribute_update">
    <p>
        Baseline Target: 
        <%= f.number_field :baseline_target %>
    </p>
    <p>
        Baseline Completed:
        <%= f.number_field :baseline_completed %>
    </p>
    <p>
        Baseline Reasons:
        <%= f.text_field :baseline_completed %>
    </p>            
</div>

而且,为了向您展示模式,这里是第二个:

<div id="followuplog_attribute_update">
    <p>
        3 Week Target: 
        <%= f.number_field :week3_target %>
    </p>
    <p>
        3 Week Completed:
        <%= f.number_field :week3_completed %>
    </p>
    <p>
        3 Week Reasons:
        <%= f.text_field :week3_completed %>
    </p>            
</div>

以下是我创建它们的方法:

add_column:follow_up_logs,:baseline_target,:integer   add_column:follow_up_logs,:baseline_completed,:integer   add_column:follow_up_logs,:baseline_reasons,:string

add_column:follow_up_logs,:week3_target,:integer   add_column:follow_up_logs,:week3_completed,:integer   add_column:follow_up_logs,:week3_reasons,:string

问题是,只保存目标变量。所有其余部分都不保存到数据库中。因此,当我提交表单时,由于一些奇怪的原因,:baseline_target和:week3_target都保存到数据库,但没有别的。 (好吧,实际上已完成的变量保存为0,原因变量保留为零)

以下是我的控制器操作:

follow_up_logs_controller.rb

  def new
    @follow_up_log = FollowUpLog.new
  end

  def create
    @follow_up_log = FollowUpLog.new(params[:follow_up_log])

    if @follow_up_log.save
        redirect_to @follow_up_log
    else
        render 'new'
    end
  end

  def update
    @follow_up_log = FollowUpLog.find(params[:id])
    if @follow_up_log.update_attributes(params[:follow_up_log])
      flash[:success] = "Log Updated"
      redirect_to @follow_up_log
    else
      render 'edit'
    end
  end

  def edit
    @follow_up_log = FollowUpLog.find(params[:id])
  end

我无法弄清楚发生了什么,我们将非常感谢任何帮助。我觉得它一定是我一直缺的东西=(

修改。拼写

1 个答案:

答案 0 :(得分:2)

重复属性:baseline_completed

<p>
    Baseline Completed:
    <%= f.number_field :baseline_completed %>
</p>
<p>
    Baseline Reasons:
    <%= f.text_field :baseline_completed %>  ## <== should be :baseline_reasons
</p>            

使用:week3_completed

的其他表单也是如此

这就是为什么当您提交表单时,text_field值会覆盖number_field值。并且您完成的变量保存为0,原因变量保留为nil