问题标签 [applicationcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
985 浏览

ruby-on-rails - 如何将默认值合并到 Rails 5 中的嵌套参数中?

我拼命尝试将一组默认值合并到我的嵌套参数中。不幸的是, usingdeep_merge在 Rails 5 中不再起作用,因为它不再继承自Hash.

所以这不起作用

它给了我这个错误:

ActionController::Parameters:0x007fa24c39cfb0 的未定义方法“deep_merge”

那么怎么做呢?

0 投票
1 回答
50 浏览

ruby-on-rails - 如何处理 Rails 连接表关系删除?

我正在创建一个管理用户和任务的应用程序。这两个模型之间的关系是多对多的,因为一个用户可以有很多任务分配给他们,而一个任务可以有很多用户分配给它。出于这个原因,我创建了一个 UserTasks 迁移和模型来充当连接表。展望未来,我意识到我希望我的前端功能能够让用户能够从给定任务中分配和删除用户。由于我使用的是 JS 前端,并向我的 Rails 服务器控制器发送 AJAX 请求,因此我不清楚如何处理此功能。我不想从数据库中删除用户或任务,而只是关系。可以为我的 UserTask 模型制作一个 API 控制器,并在 #destroy 方法中处理这个逻辑吗?Rails 提供了更自动化的方法吗?

这是我的模型的样子:

用户

任务

用户任务

当前路线

0 投票
1 回答
292 浏览

ruby-on-rails - 在将 Rails 从 4.1 更新到 5.2 并添加响应者 gem 后,为我的控制器获取“未定义的方法 `flash`”

我正在将 rails 从 4.1 更新到 5.2 我添加了respondersgem,所以 respond_with 存在。我的 ApplicationController 现在看起来像这样:

class ApplicationController < ActionController::API self.responder = ApplicationResponder respond_to :html

但是,当我打电话时,respond_with我收到此错误:

我在响应者自述文件中注意到有一个 flash 响应器,但是我不想使用它。

0 投票
1 回答
652 浏览

ruby-on-rails - 在 Ruby on Rails 中将函数参数转换为 Hash 对象

我必须对在 Ruby On Rails 中开发的 API 进行更改,如下所示:

我将“代码”参数中的一些数据传递给它,然后对其进行解密并进行探索。我想添加一个 if 子句,所以当我从不同的来源调用 API 时,不会发生加密和解密。所以我做了这个改变:

问题是 data.class 不是一个 Hash 对象,它是一个字符串。我尝试了不同的解决方案来将对象从 String 转换为 Hash,例如 t_hash 和其他类似函数,但它们不起作用。我收到一些关于不允许参数的错误,我尝试将许可证添加到它们但仍然失败。

还有什么想法吗?

0 投票
2 回答
714 浏览

ruby-on-rails - 如何为 Rails 控制器对象设置假请求对象

我需要在控制器外部使用 render_to_string 方法。所以我创建控制器实例,如:

但它失败了,因为里面的请求对象是零。你能帮我吗?如何为控制器对象创建虚假请求?

0 投票
1 回答
111 浏览

ruby-on-rails - 如何重定向到相同控制器动作的另一种格式?

我有这个index方法在我的TasksController

html如果有超过 100 个任务,我如何呈现我的索引操作的版本?

我上面的代码不起作用。它不是重定向和显示闪存消息,而是下载html文件。我不明白为什么。如果可以,请你帮助我。

0 投票
2 回答
453 浏览

activemodel - 如何将空文本数组从视图传递到控制器以在 Rails 中更新?

我有一个模型,它有一个像这样定义的文本数组字段

t.text "widgets", default: [], array: true和我的控制器中允许的参数

params.require(:model).permit(widgets: [])

在我看来,我可以使用看起来像的输入字段来构建要放入此数组的值

<input multiple="true" value="widget_name" name="model[widgets][]" id="model_widgets"/>

这适用于从数组中添加和删除值的所有情况,除了从数组中删除最后一个值(如果它已经存在于模型中)的情况

是否有一个神奇的隐藏输入可以用来将一个空数组传回控制器进行更新?

我知道复选框也有类似的问题,您可以在其中使用值为 0 的隐藏字段。我尝试过使用类似的方法,例如

<input type="hidden" value="0" name="model[widgets][]" id="model_widgets"/>它将一个数组返回给控制器,看起来像["0"](显然),

<input type="hidden" value="0" name="model[widgets]" id="model_widgets"/>这是控制器中不允许的参数(因为它不是数组),甚至

<input type="hidden" value="[]" name="model[widgets]" id="model_widgets"/>- 也是不允许的,希望有一个空数组。

我知道我可以通过在我的控制器中启用一个新参数来完成这项任务,该参数在出现时表示一个空的小部件数组,但我希望从视图的角度来看有一个“正确”的方法。

0 投票
0 回答
122 浏览

ruby-on-rails - 在 ApplicationController 中添加 Logstasher 自定义字段

我正在尝试使用 Logstasher gem 记录其他自定义字段。

我需要记录一些响应参数,但是logstasher不支持自己使用配置记录响应参数,因此我将代码放入ApplicationController的after_action方法中。

应用控制器

这是 logstasher 初始化程序

初始化程序/logstasher.rb

问题是下一个: 启动rails服务器后,我发送的第一个请求,只记录logstasher.rb中指示的参数,除了在ApplicationController中添加的参数。

但在那之后,每个请求都会记录所有指示 logstasher.rb 以及 ApplicationController 方法的内容。

有谁知道为什么第一次不记录 ApplicationController 方法的响应参数?

0 投票
2 回答
206 浏览

ruby-on-rails - Rails before_action 未在重新加载时调用

我在 WordPress 站点的子目录中部署了一个 Rails 应用程序 (5.2.4.1)。我的控制器调用 before_action 方法来验证用户

如果用户没有来自域上另一个站点的 cookie,则调用 ApplicationController 中的方法进行重定向

如果我转到私人浏览器(所以没有 cookie)并尝试访问控制器,我会按预期重定向。

如果我输入相同的 URL,则不会调用 authenticate 方法。控制器呈现动作。我在该方法中放置了一条日志记录语句,authenticate并且在进一步的页面加载时不会调用它。

难道我做错了什么?我希望在每次页面加载时调用 before_action 方法。其他两个(set_agent 和 set_client)可能也没有被调用,但由于它们根据路由参数设置实例变量,因此不会引起问题。

0 投票
0 回答
34 浏览

javascript - 如何从应用程序控制器调用 Rails 控制器方法作为 js 请求?

我有一个这样的控制器方法。(在家庭控制器中)

我知道,我们可以通过使用如下所示的 remote true 来调用此方法。因为这是一个 JS 方法。

因为它是表单,所以我可以使用 remote true,它工作得很好。但是我如何从控制器调用这个方法(比如在以下场景中我在哪里以及如何使用 remote true?)

有人可以帮我解决这个问题吗?