I need to find out how to set up a form_for for nested routes so I can pass the stripe token in a hidden field. For the documentation I've read and looked at my form_for set up looks correct but I am getting this error on the line that begin the form_for:
undefined method `membership_program_path' for #<#<Class:0x007fd4ef3da588>:0x007fd4f34ccf28>
here are my routes:
resources :programs, except: [:show] do
resources :memberships, only: [:new, :create]
end
My Membership controller:
def new
@membership = Membership.new
@program = Program.find(params[:program_id])
end
Here is my entire _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 %>