Магистральные рельсы: перенаправление на действие контроллера
Я впервые использую самоцвет для рельсов. Я должен сомневаться в том, как перенаправить в использовании магистрали. После шагов, которые я выполнил, как указано на странице GitHub, и все работает нормально. но когда я вижу свой контроллер, он содержит следующую строку в действии создания
respond_to do |format|
if @login.save
format.html { redirect_to @login, notice: 'Post was successfully created.' }
format.json { render action: 'show', status: :created, location: @login }
который прекрасно работает, но я вижу, что для объекта json он отображает действие show и, следовательно, невозможно перезагрузить страницу, поскольку он принимает ID в качестве атрибута, я могу использовать статическую страницу для отображения, это одно из решений, но мне нужно, чтобы она перенаправила его на показ действие, а не рендеринг, как это сделано, когда формат HTML. как это можно сделать?
Это мой полный контроллер:
class LoginsController < ApplicationController
before_action :set_login, only: [:show]
def index
end
def new
@login = Login.new
end
def show
end
def create
@login = Login.new(login_params)
respond_to do |format|
if @login.save
format.html { redirect_to @login, notice: 'Post was successfully created.' }
format.json { render action: 'show', status: :created, location: @login }
else
format.html { render action: 'new' }
format.json { render json: @login.errors, status: :unprocessable_entity }
end
end
end
private
def set_login
@login = Login.find(params[:id])
end
def login_params
params.require(:login).permit(:email, :password)
end
end
1 ответ
Есть много способов сделать это. 1) В вашем контроллере вместо рендеринга объекта json просто создайте create.js.erb под views/logins, затем поместите код js для перенаправления страницы. Это должно быть что-то вроде этого,
create.js.erb:
window.location.href = <%= users_path(@user) %>
2) Вы можете выполнить этот код js перенаправления окна в обратном вызове магистрали после успешного создания записи. Пожалуйста, обратитесь к этому основному сайту, чтобы узнать, как сделать успешный обратный вызов.