Ruby on rails 使用一个表单添加到rails中的多个表
基本上,我是在向数据库中添加书籍,我想将作者存储在一个单独的表中。所以我有一个名为authors的表,它被表书引用 我想创建一个rails表单来添加一本书,我希望它只是作者、标题、出版商等的一个简单表单,如果它发现作者已经在authors表中,那么它应该只引用该记录,如果它不在authors表中,那么它应该添加一条新记录并引用它 它正在工作,但值未存储到表中? 在检查表中的作者姓名时,我得到了nil参数:Ruby on rails 使用一个表单添加到rails中的多个表,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,基本上,我是在向数据库中添加书籍,我想将作者存储在一个单独的表中。所以我有一个名为authors的表,它被表书引用 我想创建一个rails表单来添加一本书,我希望它只是作者、标题、出版商等的一个简单表单,如果它发现作者已经在authors表中,那么它应该只引用该记录,如果它不在authors表中,那么它应该添加一条新记录并引用它 它正在工作,但值未存储到表中? 在检查表中的作者姓名时,我得到了nil参数: {"utf8"=>"✓", "authenticity_token"=
{"utf8"=>"✓", "authenticity_token"=>"/Tk87vLoJx+/EgPGVEa7x59IeGMGLikknBMcMTw90oo=", "book"=>{"book_name"=>"y", "price"=>"1", "authors"=>{"author_name"=>"b", "title"=>"k", "publisher"=>"s"}}, "commit"=>"Submit"}
Author Load (1.9ms) SELECT "authors".* FROM "authors" WHERE "authors"."author_name" IS NULL LIMIT 1
Unpermitted parameters: authors
params[:authors_name] in method Author.find_or_create_by() value is nil
but book column values are added to books table and author table id is only apears in author table
使用引用创建模型
rails generate model Author author_name:string{15} title:string{15} publisher:string{15}
rails generate model Book book_name:string{15} price:integer Author:references
图书管理员
class BooksController < ApplicationController
def new
end
def create
# Client.find_or_create_by(first_name: 'Andy')
@author = Author.find_or_create_by(:author_name => params[:author_name])
@book = Book.new(books_params)
@book.Author = @author
@book.save
redirect_to root_url
end
private
def books_params
params.require(:book).permit(:book_name, :price,:address => [:author_name, :title, :publisher])
end
end
class BooksControllerparams[:author_name])
@book=book.new(books\u参数)
@book.Author=@Author
@保存
将\u重定向到根\u url
结束
私有的
def books_params
参数require(:book).permit(:book_name,:price,:address=>[:author_name,:title,:publisher])
结束
结束
模型代码
class Book < ActiveRecord::Base
belongs_to :Author
accepts_nested_attributes_for :Author
end
class Author < ActiveRecord::Base
end
classbook
book.html
<%= form_for Book.new do |f| %>
<p>
<%= f.label :book_name %><br />
<%= f.text_field :book_name %>
</p>
<p>
<%= f.label :price %><br />
<%= f.text_field :price %>
</p>
<%= f.fields_for :authors do |b| %>
<p>
<%= b.label :author_name%><br />
<%= b.text_field :author_name %>
</p>
<p>
<%= b.label :title%><br />
<%= b.text_field :title %>
</p>
<p>
<%= b.label :publisher%><br />
<%= b.text_field :publisher%>
</p>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
~
~
我的问题是
2如何在authors表中保存authors列值?您的代码有很多错误。先生,由于我是rails新手,您能告诉我错误吗