gpt4 book ai didi

ruby-on-rails - 辅助方法或模型或 Controller ?

转载 作者:行者123 更新时间:2023-12-03 17:34:44 26 4
gpt4 key购买 nike

假设我有一个带有选择菜单的 form_for,用于在 own_to 关联上分配用户:

...
form.select :user_id, @users, :prompt => "Select a User"
...

目前我在 Controller 中有@users,如下所示:

@users = User.all.map { |u| [u.full_name, u.id] }

我觉得这个逻辑可能应该转移到助手甚至模型中。但我很困惑在哪里处理这个问题以及如何处理。

最佳答案

一般答案取决于您使用它的频率:

  • helper:经常使用,但仅在 View 或 Controller 中使用
  • 模型:经常在可以使用模型的任何地方使用(其他模型)
  • Controller :很少使用,仅用于特定操作。

但是就您而言,答案不是以上任何一个,并且停止尝试重新发明轮子。人们尝试使用 Rails 完成的任务中,大约 95% 都是其他人已经完成的任务。它很有可能位于 Rails Core 中或以 gem 或插件形式存在。

您想要做的事情已经完成,并且已内置到 Rails 核心中。这是一个名为 collection_select 的 ActionView::Helpers::FormOpitionsHelper 方法。

collection_select 正是您想要做的,它也比单一目的方法更强大。

其形式为

collection_select(object, method, collection, value_method,
text_method, select_options = {}, html_options)

value_method 和 text_method 被发送到集合中的每个项目,以获取每个选择选项的选择值和显示文本。两者都不要求是列名。

像这样使用它:

<% form_for @whatever do |form| %>
<%= form.collection_select :user_id, User.all, :id,
:full_name, :prompt => "Select a User" %>
<% end %>

关于ruby-on-rails - 辅助方法或模型或 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1627843/

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