2016-04-08 59 views
2

我有一些問題了解如何築巢3個模型。我想,在關係的最深點,(從下拉不是創建一個新的視頻,但選擇一個現有的)添加VideoWorkoutSteps強烈的參數沒有將屬性與白名單simple_form

型號:

Workout WorkoutSet WorkoutStep - >剛Video Video

關係的陣列 鍛鍊: has_and_belongs_to_many :workout_sets, :join_table => :workout_sessions, dependent: :destroy

WorkoutSet has_and_belongs_to_many :workout_steps, :join_table => :sets_steps, dependent: :destroy

WorkoutStep has_and_belongs_to_many :workout_sets, :join_table => :sets_steps

而在意見如下:

_form.html.haml

= simple_form_for(@workout, url: admin_workouts_path(@workout)) do |f| 
    = f.input :title 
    %h3 Sets 
    .sets.some{ :style => "margin-left: 25px" } 
    = f.simple_fields_for :workout_sets do |set| 
     = render 'workout_set_fields', f: set 
    .links 
     = link_to_add_association 'add set', f, :workout_sets 
    = f.submit 

_workout_set_fields

= f.label :title 
= f.text_field :title 
%br 
%br 
    #sets.some{ :style => "margin-left: 25px" } 
    = f.simple_fields_for :workout_steps do |step| 
     = render 'workout_step_fields', f: step 
    .links 
     = link_to_add_association 'add step', f, :workout_steps 

_workout_step_fields

= f.association :main_videos, include_hidden: false 

workouts_controller.rb

def workout_params 
    params.require(:workout).permit(:title, :pro, :workout_step_id, workout_sets_attributes: [ :id, :_destroy, :title, workout_steps_attributes: [ main_video_ids: [:id] ] ]) 
end 

檢查PARAMS:

screen shot 2016-04-08 at 8 34 51 pm

回答

1

僅供參考,問題已解決,正如我在上述註釋中所述。

params.require(:workout).permit(:title, :pro, :workout_step_id, workout_sets_attributes: [ :id, :_destroy, :title, workout_steps_attributes: [ {main_video_ids: []} ]]) 

更多信息,check this link

0

main_video_ids是一個數組屬性,而不是散列s。因此,您可以直接將其列入白名單:

def workout_params 
    params.require(:workout).permit(:title, :pro, :workout_step_id, workout_sets_attributes: [ :id, :_destroy, :title, workout_steps_attributes: main_video_ids: [] ] ]) 
end 
+0

沒有工作 - 壽,發現了一種白名單的'ids'但儘管如此,該機型沒有被創建 'params.require(:鍛鍊) .permit(:title,:pro,:workout_step_id,workout_sets_attributes:[:id,:_destroy,:title,workout_steps_attributes:[{main_video_ids:[]}]]) – alexunger

+0

謝謝,更新了我的回答。你是否得到正確的參數?也許這是一個驗證問題?如果你做'@ workout.valid',你會得到什麼?' –

+0

'true' - 此外,調試內容似乎一切都已到位,只是保存步驟。 http://imgur.com/BWxv5d6 – alexunger