当前位置: 首页 > 知识库问答 >
问题:

如何将列表中的选择结果放到另一个表字段中

步博厚
2023-03-14

使用Ruby 2.0和Rails 4.0.2,我有两个表。其中一个表在第二个表的_form视图中填充选择列表集合。我需要从选择列表中获取用户选择的结果,并在另一个表字段中输入该名称值,而不是选择的ID,而是实际的单词。我想在没有连接表的情况下执行此操作。

我一直在用书籍和作者尝试一些短裙,并观看Ryan Bate的视频短裙,但没有人详细解释如何解决上述问题。我很困惑。如果我能理解这个过程,我可以在应用程序中重新创建它。

Author
  has_many :books
  accepts_nested_attributes_for :books, :reject_if => lambda { |a| a[:bookname].blank? },       :allow_destroy => true
Book
  belongs_to :author

Books控制器示例:def new @ book = book . new @ author = author . find(params[:author _ id])@ book = @ author . books . build

def create
  @author = Author.find(params[:author_id])

Book _form.html.erb
<div class="tryit">
 <%= f.collection_select(:author, :author_id, @authors; :id, :name) %>
</p>
</div>

从这里开始我就被困住了。不明白如何将作者姓名放入Book表的author name字段。我不想使用连接表,只需用正确的数据填充book表。

有人能给我建议吗谢谢

共有1个答案

赫连方伟
2023-03-14

你不需要作者的名字

ActiveRecords Associations的目的是为关系数据库交互提供一个框架。基本上,这些表使用一个primary_key(唯一标识符——典型的id)和一个foreign_key(另一个表中的主键

因为Rails是关系型和面向对象的,所以它允许您这样做:

@book.author.name

外键

当您像现在这样使用ActiveRecord时,它会像这样填充您的表:

authors
id | name | etc | etc | created_at | updated_at

books
id | author_id | title | ISBN | etc | created_at | updated_at

这意味着,在从属书籍表格中填充的数据比作者foreign_key的数据多。这将允许 Rails 在您调用书籍对象时调用所有作者属性

代表

解决这个问题的一种方法(如果您想直接从< code>book对象< code >中访问所有作者信息)是使用[delegate`]3方法:

#app/models/book.rb
Class Book < ActiveRecord::Base
    belongs_to :author
    delegate :name, to: :author, prefix: true
end

这将允许您调用@book.author_name

 类似资料:
  • 当我试图将从表t_comment_photo查询的userPhoto映射到java类ToyComment中的列表元素时,我得到了错误。 我试图修复的resultMap是: 我尝试了和,但都不起作用。 怎么把它修好?

  • 问题内容: 表格如下: 我想获取班级列表,以及每个班级-属于每个班级的学生人数。我怎样才能做到这一点? 问题答案: 您需要这样做-

  • 问题内容: 我有2张桌子,一张用于会员,另一张用于他们的服务。这些是MySQL 5.6服务器上的InnoDB表。 会员表: 服务表: 我尝试达到以下结果: 因此,如果服务表中存在用户ID,则列服务将为true或false。 我尝试使用JOIN和子查询来完成此操作,但没有成功,因此我需要您的帮助;) 问题答案: 使用服务表,请尝试此查询

  • 我想在选择另一个select元素的一个选项时显示一个select元素,在选择另一个选项时隐藏它。 这是JavaScript: 感谢任何帮助。谢谢

  • 问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以

  • 问题内容: 我寻求帮助的以下问题:我有两个表 列,, 列,,, 我想将数据从(仅列)复制到(到列)。该均在表中相同(有重复项的ID),所以这就是我要复制到新表,并保持在一个单一的行中的所有数量与每个位置为一列的原因。我正在使用以下查询,但它不起作用 问题答案: 如果为空,请尝试以下插入语句: 如果已经包含值,请尝试以下更新语句: