Rails编辑类窗体不保存到DB

时间:2014-11-25 20:22:09

标签: ruby-on-rails

在Rails中,我有以下表格供管理员用来编辑“交换”类的实例:

<%= form_for(@exchange) do |f| %>
    <div class="form-group">
      <%= f.label :status %><br>
      <%= f.text_field :status, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= f.label :status_1 %><br>
      <%= f.text_field :status_1, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= f.label :status_2 %><br>
      <%= f.text_field :status_2, class: "form-control" %>
    </div>
    <div class="form-group">
      <%= f.submit "Submit Changes", class: "btn btn-primary" %>
    </div>
<% end %>

此表单正在 deals / edit.html.erb

上呈现

我有以下控制器操作:

def edit

    @exchange = Exchange.find(params[:id])

end

def update
    @exchange = Exchange.find(params[:id])
    @exchange.update(exchange_params)
    respond_with @exchange
end

我的routes.rb:

resources :exchanges do
    patch :update_ordid, on: :member
    patch :update_ordlnk, on: :member
    post :mark_arrival, on: :member
    post :close_exchange, on: :member
end

我知道正在成功调用“更新”控制器操作,因为在单击提交按钮后,我将被重定向到相关交换的视图页面。问题是数据库中该交换的记录没有更新。

1 个答案:

答案 0 :(得分:2)

您需要将控制器中的参数作为私有方法列入白名单。

private

def exchange_params
  params.require(:exchange).permit(:status, :status_1, :status_2)
end

通过上述内容,我假设您的模型Exchange在数据库中有一个表exchanges,该表包含status列,{ {1}},status_1

您可以阅读更多here