Метод, вызываемый перед действием, даже если before_action не установлено - PullRequest
0 голосов
/ 17 мая 2018

У меня есть действие, которое принимает ввод формы, а затем выполняет некоторые сравнения и обновления базы данных.После этого он перенаправляет на другое действие.

Это прекрасно работает, если пользователи следят за потоком формы, но я также хочу разрешить пользователям получать доступ к действию результатов напрямую, перейдя к контроллеру / результатам.Прямо сейчас это выдает ошибку:

Не удалось найти предпочтения с 'id' = результат

Ошибка в том, что он пытается вызвать метод set_preferences ().Однако этот метод не вызывается до действия результатов.

Как я могу обновить этот параметр, чтобы пользователи могли напрямую переходить к контроллеру / результатам и параметр id не требовался?

Здесьтекущий поток: index-> ​​new-> create-> test-> results

class PreferencesController < ApplicationController
  before_action :set_preference, only: [:show, :edit, :test, :update, :destroy]

  def test
    #stuff happens

    #redirect to results exploration page
    render action: "results"#
  end

  def results
    @results = Preference.all
  end

1 Ответ

0 голосов
/ 17 мая 2018

Это потому, что выполняется действие show.Если вы проверите журналы, вы увидите, что PreferencesController#show вызывается.Поскольку это не метод REST, вам необходимо определить его в файле routes.rb.Что-то вроде:

resources :preferences do
  get :results, on: :collection
end

, чтобы GET /preferences/results вызывал правильное действие.

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