首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleForm: has_ not /to和<select>不预选表单中的当前值

SimpleForm: has_ not /to和<select>不预选表单中的当前值
EN

Stack Overflow用户
提问于 2019-08-13 14:52:58
回答 2查看 74关注 0票数 0

我有以下几种型号:

代码语言:javascript
复制
class User < ApplicationRecord
  has_many :freelanced_projects, foreign_key: :freelancer_id, class_name: 'Project'

  scope :freelancers, -> { where(role: 'freelancer') }
end

class Project < ApplicationRecord
  belongs_to :freelancer, class_name: 'User', foreign_key: :freelancer_id
end

我使用SimpleForm在视图中生成一个很好的表单:

代码语言:javascript
复制
= simple_form_for project do |f|
  = f.input :freelancer, as: :select, collection: User.freelancers, include_blank: true

问题是,在显示的表单中,自由职业者不是预选的.

如果我将f.input :freelancer更改为f.input :freelancer_id,那么它似乎有效:

但是,正如您在屏幕截图中看到的那样,翻译丢失了,而且我非常确信不应该在翻译文件中的键中添加一个_id

那么这里有什么问题?我该怎么解决呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-14 09:04:11

解决方案是简单地对用户f.association

代码语言:javascript
复制
f.association :freelancer, collection: User.freelancers.collect { |user| [user.name, user.id] }, include_blank: true

重要:用户:freelancer,而不是:freelancer_id!简单表单将负责正确命名<select>的名称和ID,同时也会查找正确的翻译值。

票数 0
EN

Stack Overflow用户

发布于 2019-08-13 17:04:15

也许这会有帮助:

代码语言:javascript
复制
= f.input :freelancer, as: :select, collection: User.freelancers.collect { |freelancer| [freelancer.name, freelancer.id] }, include_blank: true

freelancer.name替换为自由职业者名称的任何字段名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57480351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档