我刚刚开始使用 Rails,我正在尝试构建一个银行应用程序。我在设置帐户之间的交易时遇到问题。
我目前已经搭建了交易和账户。在我的交易页面中,我可以为每笔交易创建一个交易列表,其中包含有关源账户、转账金额和目标账户的信息。但是,在页面末尾,我想要一个链接或按钮来处理页面上的所有事务并清除页面。因此,修改所有指定的帐户余额。
以下是我采取的步骤。
1)在事务模型(transaction.rb模型)中定义流程方法
class Transaction < ActiveRecord::Base
def proc (transaction)
# Code processes transactions
@account = Account.find(transaction.from_account)
@account.balance = @account.balance - transaction.amount
@account.update_attributes(params[:account]) #update the new balance
end
end
2)然后在事务控制器调用execute中创建一个方法
def execute
@transaction = Transaction.find(params[:id])
proc (@transaction)
@transaction.destroy
respond_to do |format|
format.html { redirect_to transactions_url }
format.json { head :no_content }
end
3)然后定义要在交易页面上显示的链接(如下所示):
<% @transactions.each do |transaction| %>
<tr>
<td><%= transaction.from_account %></td>
<td><%= transaction.amount %></td>
<td><%= transaction.to_account %></td>
<td><%= link_to 'Execute', transaction, confirm: 'Are you sure?', method: :execute %></td>
<td><%= link_to 'Show', transaction %></td>
<td><%= link_to 'Edit', edit_transaction_path(transaction) %></td>
<td><%= link_to 'Destroy', transaction, confirm: 'Are you sure?', method: :delete %></td>
<td><%= transaction.id%></td>
</tr>
<% end %>
4) 但是当我单击执行链接时,我收到路由错误:[POST] "/transactions/6"
目前我的路线(routes.rb)设置如下:
resources :transactions do
member do
post :execute
end
end
resources :accounts
如何设置路线以便它可以处理我的方法?提前致谢