2013-02-10 5 views
0

URL: /evaluationsДействие form_for -> показать

Я сделал форму, чтобы выбрать конкретный элемент (период)

class EvaluationsController < ApplicationController 
    def index 
    @periods = Period.all 
    end 

Моя форма:

<% form_for XXXXX do %> 
    <%= collection_select(:period, :period_id, @periods, :id, :fullname) %> 
    <%= submit_tag("Valider") %> 
<% end %> 

Я хотел бы, форма для перехода в/оценки/3 при подаче (если выбранный период равен 3).

Когда я перехожу вручную в/оценки/3, он работает как шарм, но я действительно не знаю, как написать form_for, чтобы перейти к правильному URL-адресу, отправив форму.

ответ

1

Простой способ

Отправить период ID для обработки данных, а затем перенаправить к действию, который обрабатывает evaluations/:id с :id как параметры.

redirect_to <youraction>(:period => @id) 

Это должно сделать трюк.

Не так простой способ

Если вы хотите что-то изменить динамически на странице после того, как данные были представлены - метод вызова и ответить JavaScript

respond_to do |format| 
    format.js 
end 

В JavaScript ответ вы можете положить все, что вы want - простые переадресации или скрипт, который будет динамически изменять страницу. Тебе решать.

Надеюсь, это поможет.

+0

отлично! вот что я искал – Max

0

вам нужно использовать некоторые JavaScript для обновления action формы

$('#period_period_id').change(function() { 
    $('form').attr('action', '/evaluations/' + this.value); 
}) 
+0

действительно? нет способа сделать это в рельсах? – Max

+0

есть. когда страница уже загружена, рельсы не могут изменить сгенерированный html. поскольку вы основываете URL-адрес формы на period_id, вы не можете ожидать, что рельсы узнают об этом, прежде чем вы будете отображать страницу. – jvnill

+0

Да, это так. и как насчет оригинального тега формы? form_for XXXXX do? – Max

Смежные вопросы