Проблемы с использованием камня разработки - PullRequest
0 голосов
/ 06 мая 2020

Я все еще изучаю рельсы, поэтому гарантирую, что моя проблема действительно проста.

На моем сайте 3 контроллера; Скрипты, пользователи и страницы. Моя проблема в том, что если пользователь не вошел в систему, они автоматически отправляются прямо на страницу входа / регистрации из-за моих действий на моем контроллере сценариев. Я не хочу, чтобы это происходило, когда пользователь находится на моей странице root, которая связана с моим контроллером Pages?

  before_action :set_script, only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!

Я пробовал поэкспериментировать, но не могу понять

  before_action :set_script, only: [:show, :edit, :update, :destroy]
  before_action :authenticate_user!, only: [:new, :show, etc]

Спасибо, переполнение стека

Также это мой журнал для рельсов s

Processing by PagesController#index as HTML
Completed 401 Unauthorized in 8ms (ActiveRecord: 0.0ms | Allocations: 1163)
Started GET "/users/sign_in" for 127.0.0.1 at 2020-05-06 20:34:21 +1000
Processing by Devise::SessionsController#new as HTML
  Rendering devise/sessions/new.html.erb within layouts/application
  Rendered devise/shared/_links.html.erb (Duration: 1.6ms | Allocations: 713)
  Rendered devise/sessions/new.html.erb within layouts/application (Duration: 11.2ms | Allocations: 3029)
[Webpacker] Everything's up-to-date. Nothing to do
  Rendered layouts/_nav.html.erb (Duration: 0.7ms | Allocations: 452)
  Rendered layouts/_messages.html.erb (Duration: 0.4ms | Allocations: 204)
  Rendered layouts/_footer.html.erb (Duration: 0.3ms | Allocations: 79)
Completed 200 OK in 104ms (Views: 86.1ms | ActiveRecord: 6.2ms | Allocations: 22723)

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Вы должны оставить before_action :authenticate_user!, чтобы по умолчанию все действия вашего контроллера не были опубликованы c

Если вам нужен какой-то контроллер для выполнения действия publi c, тогда в спецификациях c, поэтому ваш PagesController, вы можете пропустить before_action с чем-то вроде

    class ApplicationController < ApplicationController
      skip_before_action :authenticate_user!, only: :home

      def home
      end
    end

Это сделает home действие publi c

0 голосов
/ 06 мая 2020

Мне пришлось пропустить before_action: authenticate_user! от моего контроллера приложения

class ApplicationController < ActionController::Base

    before_action :configure_permitted_parameters, if: :devise_controller?
    before_action :authenticate_user!
    protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
    end

end

до

class ApplicationController < ActionController::Base

    before_action :configure_permitted_parameters, if: :devise_controller?
    protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
    end

end
...