我有这张表,您可以在其中添加税款。
|Name | Rate | Description |
|IVA | 16 | something |
| | | |
| | | |
| | | |
save
因此,如果您点击“保存”,则会保存输入的新项目。我必须在tax_controller.rb
中这样做@account = Account.find(current_user.account_id)
3.times {@account.taxes.build}
然后以表格
<%= form_for(@account) do |f| %>
<table style="width:400px;" class="taxes">
<tr>
<th>Name</th>
<th>Rate</th>
<th>Description</th>
</tr>
<%= f.fields_for :taxes do |builder| %>
<tr>
<td><%= builder.text_field :name %></td>
<td><%= builder.text_field :rate %> %</td>
<td><%= builder.text_field :identification %></td>
</tr>
<% end %>
...
当我提交表单时,字段会保存在数据库中。问题是它重定向到帐户显示页面;我明白因为form_for(@account)
而必须这样做。
所以问题是:如何在提交后指定表单重定向的位置。在这种情况下,我想将其重定向到当前页面。
答案 0 :(得分:6)
这只是间接因为form_for(@account)
。
当您发布表单时,它会触及accounts_controller的创建(或更新)操作。
因此,在这个控制器的这2个动作(创建和更新)中,你应该做redirect_to ...
。
您说要重定向到当前页面。当前页面究竟是什么?
好的,你可以做的是将它添加到你的路线:
resources :accounts, :module => "taxes"
你的表格会变成
form_for [:taxes, @account] ... do |f|
您的控制器将在app/controllers/taxes/accounts_controller.rb
class Taxes::AccountsController < ::AccountsController
def edit
end
def update
...
redirect_to taxes_url
end
end
所以你必须用这种方法改变你的形式。您可以将路径([@account]或[:taxes,@ account])作为您的部分参数...
另一个解决方案,可能更简单,就是在表单中输入redirect_to。只有在税收中使用表单时才设置它。在控制器中,unless params[:redirect_to].blank?; redirect_to params[:redirect_to] end
...