我的问题与此问题相似:ruby on rails-数据未保存。索引显示空白值
但是,强参数符合答案,并且似乎没有数据得出。
如果我使用params.require(:bankTransaction)。permit(...)我会发现一个错误: param缺少否则值为空
如果我删除了要求零件,则添加一行,但没有值。
我浏览了视图和控制器,检查了我的拼写,为了我的一生,我看不到我错过了什么,任何人都可以指向正确的方向吗?
控制器:
class BankAccountsController < ApplicationController
def delete
end
def destroy
end
def edit
end
def update
end
def index
@bankaccount = BankAccount.all
end
def show
end
def new
@banktransaction = BankAccount.new(:transactionDate => Time.now, :description => params[:description], :credit => params[:credit], :debit => params[:debit])
end
def create
@banktransaction = BankAccount.new(bank_account_params)
if @banktransaction.save
flash[:notice] = "transaction added successfully."
redirect_to(bank_accounts_path)
else
render('new')
end
end
private
def bank_account_params
params.require(:banktransaction).permit(:transactionDate,:description,:credit,:debit)
end
end
查看:
<h1>BankAccounts#new</h1>
<p>Find me in app/views/bank_accounts/new.html.erb</p>
<div class="new transaction">
<h2>Create Transaction</h2>
<%= form_for(@banktransaction, :html => {:multipart =>true }) do |f| %>
<%= render(:partial =>'form', :locals=> {:f => f}) %>
<div class="form-buttons">
<%= f.submit("Create Transaction") %>
</div>
<% end %>
</div>
形成部分:
<%= f.label(:transactionDate) %>: <%= f.date_field(:transactionDate) %><br>
<%= f.label(:description) %>: <%= f.text_field(:description) %><br>
<%= f.label(:credit) %>: <%= f.number_field(:credit) %><br>
<%= f.label(:debit) %>: <%= f.number_field(:debit) %><br>
路由:
Rails.application.routes.draw do
resources :bank_accounts do
member do
get :delete
end
end
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
简而言之,您只允许错误的参数键。是bank_account
,您的bank_account_params
应该是
def bank_account_params
params.require(:bank_account).permit(:transactionDate,:description,:credit,:debit)
end
Rails的表单构建器将在模型名称上构建您的参数基础,而不是可变名称。
您的new
操作分配BankAccount
实例
def new
@banktransaction = BankAccount.new(:transactionDate => Time.now, :description => params[:description], :credit => params[:credit], :debit => params[:debit])
end
因此,形式构建器将使用 bank_account
用作param键,而不是变量名称 banktransaction