[英]Populating form fields for one model with data from another model (in Rails)
基本上,我有一個事件 model 和一個 EventSets model。 事件有 EventSets(如果適用),所以我可以在應用程序中相應地列出和分組它們(例如,公園里的一組音樂會事件,其中每個音樂會事件的屬性略有不同,但大多數數據對所有事件都是通用的該集)。
我有必要的關聯,以便我可以在 Events#new 中指定一個 EventSet。
在我的 EventSet model 中,我有幾列“默認”信息(常用位置、常用名稱等),我想用它們來預填充 Events#new 中的字段。
新事件的 EventSet 由 select 字段指定(其中列出了從 EventSets 表中提取的所有 EventSet)。
在 Rails 3 (w/jQuery) 中有處理這個的標准方法嗎? 或者我應該推出自己的 jQuery/AJAX 修復來處理它? (我喜歡在適當的情況下堅持合理的默認設置。)
編輯澄清:我正在嘗試在提交表單之前在 /events/new 視圖中預填充表單字段(一旦選擇了 EventSet)。 這是必要的,因為 EventSet 指定的“默認值”通常會被給定事件覆蓋……它們只是為用戶節省輸入重復的起點。
使用 after_initialize 回調
def after_initialize :copy_stuff
def copy_stuff
return unless self.new_record?
@event_set = EventSet.find(...)
self.field1 = @event_set.field1
self.field2 = @event_set.field2
end
您也可以在 Controller 中執行類似的操作。
def new
@event_set = EventSet.find(...)
@event = Event.new(:field1 => @event_set.field1, :field2 => @event_set.field2)
...
end
編輯
您需要通過 ajax 請求獲取這些字段
路線.rb
post '/get-eventset-fields' => 'events#event_set_fields', :as => :get_eventset_fields
events_controller.rb
def event_set_fields
@event_set = EventSet.find_by_id(params[:eventset_id])
render :json => @event_set.to_json
end
新的.html.erb
var mycallback = function(data){
$('#event_field1').val(data.field1);
$('#event_field2').val(data.field2);
}
$("#eventset_select").change(function(){
$.post('<%= get_eventset_fields_path %>', {'eventset_id': $(this).val()}, mycallback, "json");
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.