2016-10-07 3 views
1

У меня есть что-то странное в моем приложении rails, я пытаюсь перенаправить пользователя на определенную страницу, если форма неправильная. Он работает, но URL-адрес не соответствует представлению.rails - URL-адрес не совпадает с представлением

Я использую файлы, созданные rails g scaffold User. Я добавил конкретное условие в файле модели, чтобы проверить ввод пользователя, чтобы увидеть, хорошо ли форматируется форма или нет, а если нет, перенаправляет его на вид соединения.

перенаправить его между 2 разными контроллерами

Так я повернул это (приложение/контроллер/users_controller.rb):

def create 
    @user = User.new(user_params) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to root_path, notice: 'User was successfully created.' } 
     format.json { render :show, status: :created, location: @user } 
     else 
     format.html { render :new } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

в это:

def create 
    @user = User.new(user_params) 

    respond_to do |format| 
     if @user.save 
     format.html { redirect_to root_path, notice: 'User was successfully created.' } 
     format.json { render :show, status: :created, location: @user } 
     else 
     format.html { render :template => 'pages/connection' } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

Я пытался и я хорошо перенаправлен на страниц/connection.rb, но адрес в моем браузере: http://url:8080/users, а не http://url:8080/connection. Поэтому, если я обновляюсь, он оставляет страниц/connection.rb до пользователей/.

Также, сообщения об ошибках от model/user.rb не отображаются.

что не так в моем коде?

+0

'Кроме того, сообщения об ошибках от модели/user.rb не displayed.' - вы пытались перечислить их на ваш взгляд? – max

+0

действительно я копирую вставить некоторый контент из файлов, созданных эшафотом, и я забыл скопировать user.errors.full_messages – Tellimi

ответ

0

Вы визуализируете страницы шаблона/соединения, вы не перенаправляете пользователя на другой контроллер.

format.html { render :template => 'pages/connection' } 

Рендер и перенаправлять не одни и те же

+0

Да, я знаю, я использовал неправильный словарь. Я не хочу использовать redirect_to, потому что мне нужно поймать почтовый запрос, поэтому мне нужно сделать – Tellimi

+0

@Tellimi Извините - я не уверен, что ваш вопрос в этом случае. Что вы пытаетесь достичь? Использование рендера не будет обновлять URL-адрес для пользователя - это правильное поведение. Это будет достигнуто только путем перенаправления. –

+0

Я лучше понимаю, как это работает, и теперь я не в одном месте в своем проекте. Я уточню. Я хочу отправить своего пользователя в «соединение». Я должен отправить сообщение об ошибке из модели, поэтому я должен использовать визуализацию, и если я использую рендеринг URL-адреса/пользователей. Если я использую redirect_to, сообщения не отображаются. Возможно ли отправить пользователя в соединение просмотра с URL-адресом, но все еще с моими сообщениями об ошибках? – Tellimi

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