2013-09-13 4 views
0

У меня есть основная форма для создания проекта ...Rails 4: Params не передается обратно смотреть после отправки формы

<%= form_for(@project, :url => {:action=>'create'}) do |f| %> 
<%= f.text_field(:name, {class: "form-control"}) %> 
<%= f.text_area(:instructions, {class: "form-control"}) %> 
<%= f.submit('Create Project') %> 
<% end %> 

В контроллере, у меня есть два действия:

def create 
    @project = Project.new(project_params) 
    if @project.save 
     flash[:notice]= "New project created!" 
     redirect_to(:action=>'index') 
    else 
     flash[:error]="Problem creating project" 
     redirect_to(:action=>'new') 
    end 
    end 

    def new 
    @project = Project.new() 
    end 

У меня есть несколько валидаций, которые препятствуют пустым полям. Когда форма выходит из строя, я снова перенаправляюсь на «новую» страницу, но переменная @project всегда пуста.

Почему?

ответ

3

Вы не хотите перенаправлять ошибку, которую хотите сделать: это означает, что страница new будет отображаться с переменными из (и URL-адреса) действия create, предварительно заполняя поля формы, поскольку вы ожидал бы.

Изменить действие контроллера на это:

def create 
    @project = Project.new(project_params) 
    if @project.save 
     flash[:notice]= "New project created!" 
     redirect_to(:action=>'index') 
    else 
     flash[:error]="Problem creating project" 
     render :new 
    end 
    end 
Смежные вопросы