我有一個List控制器/ model/whatever-you-would-call-it,當我創建一個帶有窗體,我想將:position列設置爲其id:id。我不知道我會怎麼做。如何設置一個列值:在創建新項目時使用表格的位置爲該項目的id:
順便說一下,這個位置的類型是Integer。
我的想法:
- 在控制器:lists_controller.rb,在新的方法,或者也許是創建方法,添加一些代碼。
- 在設置其他屬性時在表單中的某個位置,潛入那個位置的小狗。 (我只是想在創建新列表時將位置設置爲id,雖然沒有更新)
- 在模型中自己設置它。 (我不想設定:位置爲:ID,當我更新/編輯,(只有當創建新的),則該項目,所以我敢肯定,這是行不通的)
下面是一些代碼,可能幫助:
_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
這只是控制器的一個片段。
如果你能指出我正確的方向,我將不勝感激。
是位置需要由最終用戶對UI提供?或者你是否希望在創建模型時將位置接受在表單中? 如果沒有,那麼你可以在模型的after_create回調中將id分配給位置。 –
@NarenSisodiya如何將id分配給after_create中的位置? – samando
遲到了...... AytanLeibowitz的回答是正確的。 –