Ruby on rails 在视图中插入对应于外键的值(执行应用程序)?

Ruby on rails 在视图中插入对应于外键的值(执行应用程序)?,ruby-on-rails,database,foreign-key-relationship,Ruby On Rails,Database,Foreign Key Relationship,我是Rails的初学者。在阅读文档和教程的同时,我正在用另一种语言(用GeneXus生成的Java)移植我在生产中的一个简单应用程序 我正在构建一个员工轮班跟踪器,所以我有两个表:用户和轮班,具有这些关联 class User < ActiveRecord::Base has_many :shifts end class Shift < ActiveRecord::Base belongs_to :user end 根据您的问题,您的表被命名为user和shift。这不是

我是Rails的初学者。在阅读文档和教程的同时,我正在用另一种语言(用GeneXus生成的Java)移植我在生产中的一个简单应用程序

我正在构建一个员工轮班跟踪器,所以我有两个表:用户和轮班,具有这些关联

class User < ActiveRecord::Base
  has_many :shifts
end

class Shift < ActiveRecord::Base
  belongs_to :user
end

根据您的问题,您的表被命名为user和shift。这不是标准的rails命名约定。所有表名应为复数形式,以便用户和班次使用。如果有必要的话,你可以绕过这个,但我不推荐

但是,如果确实希望保留这些表名,则可以使用set_table_name如下所示指定:

class User < ActiveRecord::Base
  set_table_name 'user'
  has_many :shifts
end

class Shift < ActiveRecord::Base
  set_table_name 'shift'
  belongs_to :user
end
  <div class="field">
    <%= f.label :user_id %><br />
    <%= f.select :user_id, options_from_collection_for_select(User.all, :id, :name) %>
  </div>
<div class="field">
    <%= f.label :user %><br />
    <%= f.text_field :user %> //<-- What should I write here? User_id?
  </div>
class用户
编辑:

如果希望有更好的方法来控制轮班对象,然后手动输入id,可以在视图中使用“选择”辅助对象。也许是这样的:

class User < ActiveRecord::Base
  set_table_name 'user'
  has_many :shifts
end

class Shift < ActiveRecord::Base
  set_table_name 'shift'
  belongs_to :user
end
  <div class="field">
    <%= f.label :user_id %><br />
    <%= f.select :user_id, options_from_collection_for_select(User.all, :id, :name) %>
  </div>
<div class="field">
    <%= f.label :user %><br />
    <%= f.text_field :user %> //<-- What should I write here? User_id?
  </div>


关键是使用\u集合中的选项\u作为\u选择帮助器。User.all加载所有用户,每个用户将是选择中的一个选项:id是将作为选项值的用户属性;name是将显示在选择列表中的用户属性。如果要在列表中显示另一个用户属性,则只需更改该属性。

我已经解决了

在用户字段中,使用脚手架生成的视图如下所示:

class User < ActiveRecord::Base
  set_table_name 'user'
  has_many :shifts
end

class Shift < ActiveRecord::Base
  set_table_name 'shift'
  belongs_to :user
end
  <div class="field">
    <%= f.label :user_id %><br />
    <%= f.select :user_id, options_from_collection_for_select(User.all, :id, :name) %>
  </div>
<div class="field">
    <%= f.label :user %><br />
    <%= f.text_field :user %> //<-- What should I write here? User_id?
  </div>



//很抱歉,我使用的是标准约定,因此表名实际上是复数形式的(我写这篇文章是出于内存,因为我现在无法访问我的代码)。我会更新这个问题,但谢谢你指出这一点。仅供参考,你编辑了错误的内容。类名为单数,表名为复数。另外,如果没有更多的信息,我想不出还有什么是错误的,所以如果你能提供控制器动作,你可以尝试创建对象,也许还可以创建视图,那就好了。我刚刚意识到我编辑了错误的东西。再次更正:P检查真实来源。很高兴它成功了。如果您想要一个比用户id的文本字段更好的解决方案,那么您可以查看我的附加示例非常好,感谢您提供更好的解决方案(这是我最后的目标)。我一到家就会做