Rails Tutorial 3 Глава 8: Регистрация - валидация не работает - PullRequest
0 голосов
/ 29 февраля 2012

Поэтому я пытаюсь заставить окно ошибки появиться на моей странице регистрации, когда информация была введена неправильно, однако по какой-то причине в шаблоне отсутствует ошибка.

здесьполное сообщение об ошибке

Missing template users/create, application/create with {:handlers=>[:erb, :builder], :formats=>[:html], :locale=>[:en, :en]}. Searched in: * "/Users/chris/rails/demo_app/app/views"

Похоже, что он пытается создать новый файл внутри приложения с именем create, но я не совсем уверен, почему он это делает?

вот мой users_controller.rb

def new
 @user = User.new
 @title = "Sign up"
end

def create
 @user = User.new(params[:user])
 if @user.save
  flash[:success] = "Welcome to the Sample App!"
  redirect_to @user
 else
  @title = "Sign up"
  render = 'new'
  end
 end
end

Вот мой _error_messages.html.erb

<% if @user.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@user.errors.count, "error") %> 
        prohibited this user from being saved:</h2>
    <p>There were problems with the following fields:</p>
    <ul>
    <% @user.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

Я не совсем уверен, какие еще файлы следует перечислить, поэтому, если я пропустил что-то важное, пожалуйста, дайте мне знать!

Спасибо:)

Крис

Ответы [ 2 ]

1 голос
/ 29 февраля 2012

Render - это функция, а не переменная, поэтому вы не хотите говорить render = 'new', вы хотите передать строку 'new' в функцию рендеринга, поэтому render 'new' должно работать просто отлично.Это сложная вещь в изучении Ruby, отсутствие скобок иногда смущает людей в отношении переменных и функций.

1 голос
/ 29 февраля 2012

вместо

render = 'new'

попробуйте использовать:

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