Rails 3, как настроить форму has_many и действие контроллера - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть эти модели

class User #( Devise)
  has_many :codes 
  has_many :redemptions
end

class Code
  belongs_to :band
  belongs_to :user
  has_many :redemptions
end

class Redemption
  has_one :code
  belongs_to :user
end

class Band
  has_many :codes
end

Я пытаюсь выполнить большую часть работы в представлении Band#show. Итак, у меня есть действие band_controller redeem.

Моя цель состоит в том, чтобы current_user (предоставленный devise) вводит код в форму ввода (созданную другим пользователем) и передает в действие Band#redeem и помещает user_id и code_id в погашение. объект. Это создает выкуп.

Сумасшедшая часть этого в том, что один пользователь создает код, другой выкупает его. У меня есть модель выкупа построен.

<%= form_for @band, :url => {:action => "redeem"}, do |f|  %>
  <%#= f.text_field  :code  %>
  <%= f.submit 'Submit' %>
<% end %> 

Это текущая форма, которую я настроил. Это, очевидно, не работает, но это то, что я пытаюсь подключить.

1 Ответ

0 голосов
/ 27 ноября 2011

Вместо действия redeem на BandsController я предлагаю вам просто использовать RedemptionsController#create. Примерно так:

class BandsController < ApplicationController
  def show
    @band       = Band.find(params[:id])
    @redemption = Redemption.new(code: @band.codes.first)
  end
end

# in bands/show template
<%= form_for @redemption do |f| %>
  <%= f.hidden_field :code_id %>
  <%= f.submit "Redeem now" %>
<% end %>

Эта форма будет POST до RedemptionsController#create, где вы просто создаете погашение.

...