我有一个动作,它接受表单的输入,然后进行一些比较和数据库更新。之后,它会重定向到另一个动作。
如果用户遵循表单流,这可以正常工作,但我也希望通过转到控制器/结果,让用户直接访问结果操作。现在这会引发错误:
无法使用'id'= result
找到Preference错误是因为它试图调用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
答案 0 :(得分:2)
那是因为正在执行show
动作。如果您检查日志,您将看到调用了PreferencesController#show
。由于不是REST方法,您需要在routes.rb
文件中定义它。类似的东西:
resources :preferences do
get :results, on: :collection
end
让GET /preferences/results
调用正确的操作。