2012-08-23 3 views
0

난이 간단한 질문입니다 바라고 있어요에서 증가 변수 : 라인 i = i + 1를 제외하고,레일 - 나는 다음과 같은 도우미 코드가 - fields_for 루프

module ApplicationHelper 

    def add_feature_fields(feature_types, object_form_builder, actions_visible) 
    feature_types.length.times {object_form_builder.object.features.build} 
    i = 0 
    fields = object_form_builder.fields_for :features do |features_builder| 
     render :partial => "features/fixed_feature", :locals => {:feature => features_builder, :fixed_feature_type => feature_types[i], :form_actions_visible => actions_visible} 
     i = i + 1 
    end 
    end 
end 

코드는 예상대로 작동된다. 웬일인지, 이것은 루프를 깨고있는 것처럼 보이고, 아무것도 렌더링되지 않습니다. 분명히, 나는 어떻게 든이 잘못을하고있다 - 아마 fields_for은 정상적인 루프가 아니다?

루프가 실행될 때마다 어떻게 i를 1 씩 늘릴 수 있습니까?

답변

0

보내기


module ApplicationHelper 

    def add_feature_fields(feature_types, object_form_builder, actions_visible) 
    feature_types.length.times {object_form_builder.object.features.build} 
    i = -1 
    object_form_builder.fields_for :features do |features_builder| 
     i = i + 1 
     render :partial => "features/fixed_feature", :locals => {:feature => features_builder, :fixed_feature_type => feature_types[i], :form_actions_visible => actions_visible} 
    end 
    end 
end 

내가 i = i + 1를했을 때 내가 렌더링이라고 후에이었다 무슨 일이 일어 났는지 생각, 반환 값이었다 반복자이며 렌더링하지 않습니다 (메서드가 마지막 값을 반환하기 때문에).

0

아래 코드에 대해 확실하지 않지만이 문제를 해결하고 문제를 해결해야합니다. 나는 다음을 수행하여이 작업을 얻을 수 있었다 시도

object_form_builder.each.with_index do |builder,index| 
    object_form_builder.fields_for :features, builder do |feature_builder| 
     render :partial => "features/fixed_feature", :locals => {:feature => features_builder, :fixed_feature_type => feature_types[i], :form_actions_visible => actions_visible} 
    end 
end 
관련 문제