Rails 3. Изменить перенаправление при отправке формы - PullRequest
3 голосов
/ 05 января 2012

У меня есть эта таблица, где вы добавляете налоги.

|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).

Итак, вопрос: как я могу указать, куда я хочу перенаправить форму после отправки.В этом случае я хочу перенаправить его на текущую страницу.

1 Ответ

6 голосов
/ 05 января 2012

Это только косвенно из-за form_for(@account).

Когда вы публикуете форму, она запускает действие создания (или обновления) account_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] или [: tax, @account]) в качестве аргумента вашего частичного ...

Другое решение, возможно, более простое, состоит в том, чтобы просто ввести вход redirect_to в вашформа.Вы устанавливаете его только тогда, когда вы используете свою форму в налогах.А в контроллере unless params[:redirect_to].blank?; redirect_to params[:redirect_to] end ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...