我有一个List控制器/模型/无论你怎么称呼它,当我用表单创建一个新的时,我想将:position列设置为:id。我不知道如何做到这一点。
BTW位置是Integer类型。
我的想法:
以下是一些可能有用的代码:
_form.html.erb
<%= form_with(model: @list) do |form| %>
<div class='addField'>
<%= form.text_field :name, placeholder: "Name" %>
<%= form.text_field :description, placeholder: "Description" %>
<%= form.check_box :private,class: 'check_box' %>
</div>
<div class='addLabel'>
<div>
<%= form.label :name %>
</div>
<div>
<%= form.label :description %>
</div>
<div>
<%= form.label :private %>
</div>
</div>
<div id='submitNew'>
<%= form.submit 'Done', :class => 'btn btn-primary' %>
</div>
<% end %>
lists_controller.rb
class ListsController < ApplicationController
def new
@list = List.new
end
def create
@list = List.new(list_params)
if @list.save
redirect_to @list
else
render 'new'
end
end
private
def list_params
params.require(:list).permit(:name, :description, :private)
end
end
这只是控制器的片段。
如果你能指出我正确的方向,我将不胜感激。
答案 0 :(得分:2)
您可以将List模型修改为以下内容:
list.rb
class List < ApplicationRecord
after_create :set_position
.... existing model code ...
private
def set_position
self.update_attribute(:position, self.id)
end
end