rails3 更新控制器中的参数

rails3 update param in controller

如果在表单上使用某个提交按钮,我想更新 Rails3 控制器中的 2 列值。

表单上的提交按钮:

  <%= simple_form_for @costproject, :html => {:class => 'form-horizontal'}, :validate => true do |f| %>
...

  <%= f.submit 'Submit to Division', :class => 'btn btn-warning', :name => "submit1" %>

控制器中的更新逻辑:

class CostprojectsController < ApplicationController
...
  def update
    ...
    params[:coststatus_id] = 2 if params[:submit1]
    params[:submit_date] = Date.today if params[:submit1]
    respond_to do |format|
      if @costproject.update_attributes(params[:costproject])
        flash[:success] = "Project Submitted"  if    @costproject.previous_changes.include?(:submit_date)
        format.html { redirect_to nextpath }
        format.json { render json: @costproject }
      else
        format.html { render action: "edit" }
        format.json { render json: @costproject.errors, status: :unprocessable_entity }
      end
    end
   end

如果我停止执行并发出警报,看起来参数已经设置好了。但是,这些值不会保存到数据库中。

如果要将模型保存到数据库,则需要更新模型。您只是在 update 操作中更改参数。

你需要这样的东西:

def update
  @cost_project = Costproject.find(params[:id])
  @cost_project.update(coststatus_id: 2, submit_date: Date.today) if params[:submit1]
end

.update 将更新并保存数据库中的记录

这似乎有效:

params[:costproject][:coststatus_id] = 2 if params[:submit1]
params[:costproject][:submit_date] = Date.today if params[:submit1]
respond_to do |format|