【发布时间】:2023-01-12 09:11:36
【问题描述】:
我在控制器中有一个更新方法。如果 params[:single] 的值为 1,我想运行一个如下所示的 create_exception 方法而不更新记录:
before_action :create_exception, only: %i[ update ]
def update
if @event.update(event_params) ...
end
private
def create_exception
if params[:single] == 1
@exception = @event.event_exceptions.create(date: params[:exception_date])
respond_to do |format|
format.turbo_stream
format.html { redirect_to events_path, notice: "Event was successfully updated." }
format.json { head :no_content }
end
end
end
我的第一个问题是,当我更新事件时,create_exception 方法似乎没有触发。它只是调用更新并更新记录上的信息,这不是我想要的。如果 params[:single] = 1 我想创建一个期望并重定向回计划而不更新事件。
完成此任务的最佳方法是什么?
【问题讨论】:
-
传递的参数将是一个字符串,而不是一个整数。将
params[:single] == 1更改为params[:single] == '1' -
我总是喜欢
params[:single].to_i -
谢谢。我已经尝试了这两个选项,但仍然没有捕捉到这一点。如果我检查 params,我会看到 params[:single] 确实等于 1。如果我从异常创建中删除 if 检查,它会起作用并创建异常/重定向。出于某种原因,如果签入,它没有正确地看到该参数来执行该方法。
-
您可以分享请求日志中的参数吗?
标签: ruby-on-rails