2013-04-18 65 views
0

我試圖在不同模型上滿足條件時在窗體中顯示某些字段。檢查一個模型中的字段,同時在另一個模型的表單中:Rails

這裏是例子:以上

<%= form_for(@workout) do |f| %> 
    <%= f.fields_for :workout_exercises do |s| %> 
    <%= s.collection_select :exercise_id, Exercise.all, :id, :name, { :include_blank => ""} %>    
    <%= s.label :sets %>: 
    <%= s.number_field :set %> 
    <% if @exercise.is_cardio == true %> 
     <%= s.label :time %>(Minutes): 
     <%= s.number_field :time %>  
    <% end %> 
    <% end %> 

    <%= f.submit %> 
<% end %> 

給人一種上is_cardio沒有方法誤差心是在練習表中的布爾字段

謝謝!

編輯:

class Exercise < ActiveRecord::Base 

    has_many :workout_exercises 
    has_many :workouts, :through => :workout_exercises 

end 

class Workout < ActiveRecord::Base 

    has_many :workout_exercises 
    has_many :exercises, :through => :workout_exercises 

class WorkoutExercise < ActiveRecord::Base 

    belongs_to :exercise 
    belongs_to :workout 
end 

編輯2:

具體來說,以下是錯誤我得到:

undefined method `is_cardio' for #<Array:0x007fcd3bb93dd0> 
+0

@exercise是如何定義的? –

+0

練習 has_many:workout_exercises has_many:workouts,:through =>:workout_exercises – Arel

+0

@RichardBrown我剛剛更新了模型關聯的問題。 – Arel

回答

1

我的猜測是,您需要更改

<% if @exercise.is_cardio == true %> 
    <%= s.label :time %>(Minutes): 
    <%= s.number_field :time %>  
<% end %> 

<% if s.object.exercise.is_cardio == true %> 
    <%= s.label :time %>(Minutes): 
    <%= s.number_field :time %>  
<% end %> 
+0

讓我更接近!我得到一個語法錯誤,我現在無法發現:if。@ exercise.is_cardio == true它指向的是。在@exercise – Arel

+0

之後我並不確切地知道你的意思,但你不想'。@ exercise'。你想要'運動'。沒有@。 –

+0

我嘗試了@exercise,因爲練習在練習中拋出了一個沒有方法的錯誤:未定義的方法'練習'爲# Arel

相關問題