2015-04-29 6 views
0

Мне нужно выяснить, как настроить form_for для вложенных маршрутов, чтобы я мог передать маркер полосы в скрытом поле. Для документации, которую я читал и смотрел на мой form_for настроить выглядит правильно, но я получаю эту ошибку на линии, начать form_for:Вложенная форма ресурса для формы с полосой

undefined method `membership_program_path' for #<#<Class:0x007fd4ef3da588>:0x007fd4f34ccf28> 

вот мои маршруты:

 resources :programs, except: [:show] do 
     resources :memberships, only: [:new, :create] 
     end 

Мои контроллер членства:

 def new 
     @membership = Membership.new 
     @program = Program.find(params[:program_id]) 
     end 

Вот вся моя _form.html.erb

 <%= form_for [@membership, @program] do |f| %> 
    <%= f.hidden_field :stripe_card_token %> 

    <div class="field"> 
    <%= f.label :email %> 
    <%= f.text_field :email %> 
    </div> 

    <% if @members.stripe_card_token.present? %> 
    Credit card has been provided. 
    <% else %> 
    <div class="field"> 
    <%= label_tag :card_number, "Credit Card Number" %> 
    <%= text_field_tag :card_number, nil, name: nil %> 
    </div> 
    <div class="field"> 
    <%= label_tag :card_code, "Security Code on Card (CVV)" %> 
    <%= text_field_tag :card_code, nil, name: nil %> 
    </div> 
    <div class="field"> 
    <%= label_tag :card_month, "Card Expiration" %> 
    <%= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month"} %> 
    <%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year"} %> 
    </div> 
    <% end %> 
    <div id="stripe_error"> 
    <noscript>JavaScript is not enabled and is required for this form. First enable it in your web browser settings.</noscript> 
    </div> 
    <%= f.submit %> 
    <% end %> 
+0

Бросьте маршруты (маршруты рейка) и покажите конкретный раздел, который для этого. Я подозреваю, что отношения могут быть отношения друг к другу, а ресурсы - к ресурсу в вашем файле маршрутов. –

ответ

0

Причина ошибки заключается в том, что мои ресурсы настроены таким образом, что «членство» вложен в «программы»; однако вызов form_for(@membership, @program) сообщает form_for, что ваша программа вложена в членство. Следовательно, почему он ищет membership_program_path, которого не существует. Я отменил порядок аргументов, проходящих до form_for, и он работает.

+0

Звучит точным, это было бы очевидно при просмотре рейк-маршрута, поскольку он показывал членство__и_ид/id, указывающее, что членство должно быть первым объектом. –

 Смежные вопросы

  • Нет связанных вопросов^_^