gpt4 book ai didi

ruby-on-rails - 从 Controller 调用应用程序助手的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-01 22:56:28 25 4
gpt4 key购买 nike

我想格式化 JSON 响应的值,使其与 View 中的值相同。

考虑对象,user = { id: 323 };已经创建了一个辅助方法 (format_name) 以使值在 View 中更容易呈现:

<div>
<%= format_name(user[:id]) %>
<% # appears as: <span class="user" data-user-id="323">John Doe</span> %>
</div>

由于已知原因,这在 Controller 中不可用。以下失败:

class ApplicationHelper

def format_name
# ...
end
end


class UserController < ApplicationController

def view

# ...<setup user info>...

user_formatted = {
id: user[:id],
formatted: format_name(user[:id]) # helper method
}

respond_to do |format|
format.json { render json: user_formatted.to_json }
end
end

end

我很好奇如何在 Controller 中使用辅助方法。

我试过了:

  • view_context.format_name
  • 创建一个部分(例如,_view.json.erb)来调用帮助程序并渲染 json
  • 在 ApplicationController 中设置 helper_method :format_name

最佳答案

您可以通过在 Controller 中包含您的帮助模块来做到这一点,或者您可以使用 module_function将您的辅助方法声明为可直接在模块上调用,有点像类方法。

假设你的辅助函数是在这个辅助模块中声明的:

module ApplicationHelper
def format_name(user_id)
# do stuff
end
module_function :format_name # Here's the "magic" line
end

通过添加 module_function :format_name行,您现在可以像 ApplicationHelper.format_name(user[:id]) 一样调用您的辅助函数在 Controller 中。

关于ruby-on-rails - 从 Controller 调用应用程序助手的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43331585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com