Rails 6
bootstrap 4
在我的books_controller.rb中,我有:
def index
@books = Book.select(:id,:name)
end
def new
@book = Book.new
end
def create
@book = Book.new(book_params)
respond_to do |format|
if @book.save
format.html { redirect_to @book,notice: 'Book was successfully created.' }
format.json { render :show,status: :created,location: @book }
else
format.html { render :new }
format.json { render json: @book.errors,status: :unprocessable_entity }
end
end
end
我有一张桌子,在我的views / books / index.htmlslim中,我有:
table.table.table-striped
thead
tr
th Name
tbody
- @books.each do |book|
tr
td = book.name
我想做的是,在表格的末尾添加一个表格,允许用户添加书,而无需使用单独的表格,例如:
我尝试过:
= form_with url: new_book_path do |f|
.form-inputs
= f.label 'Add Book'
= f.text_field :book_name
.form-actions
= f.submit
我也尝试过:
= simple_form_for(@book) do |f|
.form-inputs
= f.input :book_name
但是当我单击“提交”时,什么也没有发生,并且收到以下消息:
actionController::RoutingError (No route matches [POST] "/bookd/new"):
我也尝试过:
= simple_form_for(@book || Book.new) do |f|
.form-inputs
= f.input :book_name
但是。我得到一个:
actionView::Template::Error (undefined method `book_name` for #<Book:0x000007f9cce...>);
另一个想法是将其链接,例如:
= link_to new_book_path,:class => "btn btn-primary btn-lg"
但是我如何传递book_name参数,以及应该执行哪个控制器操作?
这是我的路线:
books GET /books(.:format) books#index
POST /books(.:format) books#create
new_book GET /books/new(.:format) books#new
edit_book GET /books/:id/edit(.:format) books#edit
book GET /books/:id(.:format) books#show
PATCH /books/:id(.:format) books#update
PUT /books/:id(.:format) books#update
DELETE /books/:id(.:format) books#destroy