我有一个客户端模型,其中包含以下行:
has_many :payments
和付款模式:
belongs_to :client
和
def generate_sepa
sdd = SEPA::DirectDebit.new(
name: 'name',
bic: 'bic',
iban: 'iban',
creditor_identifier: 'identifier'
)
SDD.add_transaction(
name: @client.company,
bic: @client.bic,
iban: @client.iban,
amount: self.amount,
reference: self.payment_reference,
remittance_information: self.remittance_information,
mandate_id: self.mandate_id,
mandate_date_of_signature: self.mandate_date_of_signature,
local_instrument: 'CORE',
sequence_type: self.sequence_type,
requested_date: self.date_of_payment,
batch_booking: self.batch_booking,)
sdd.to_xml
end
在付款节目视图中,我有
<%= @payment.generate_sepa %>
和支付控制器
def show
@client = Client.find(:id => params[:client_id])
end
不幸的是我收到以下错误:
未知密钥:id
的
@client = Client.find(:id => params[:client_id])
在客户控制器中我也有:
def client_params
params.require(:client).permit(:id, :trading_name, :company_name, :owner, :main_contact_name,
:email, :phone, :date_joined, :trading_street_one, :trading_street_two, :trading_town, :trading_county, :iban, :bic)
end
付款:
def payment_params
params.require(:payment).permit(:client_id, :signup_fee, :monthly_fee, :date_of_payment, :payment_reference,
:remittance_information, :mandate_id, :mandate_date_of_signature, :batch_booking, :sequence_type, :is_recurring, :is_onceoff)
end
我列入白名单的方式有问题吗?或者客户与付款之间的关联有问题,因为,说实话,我很难搞清楚出了什么问题。
修改
:当我创建新客户端时,client_id会传递给付款:
def create
@client = Client.new(client_params)
respond_to do |format|
if @client.save
format.html { redirect_to new_payment_url(:client_id => @client.id) }
format.json { render action: 'show', status: :created, location: @client }
else
format.html { render action: 'new' }
format.json { render json: @client.errors, status: :unprocessable_entity }
end
end
end
在付款_form部分我也有:
<%= f.hidden_field('client_id', :value => params[:client_id]) %>
以及其他表单字段。
答案 0 :(得分:0)
def show
@client = Client.find(params[:client_id])
end
不是吗?
答案 1 :(得分:0)
付款控制器/ show @client = Client.find(params[:id])
无法使用。
使用
@payment= Payment.find(params[:id])
@client = @payment.client
因为您将付款ID传递给节目,而不是客户端ID。