问题描述
大家好,我到处搜索了如何输出格式错误,但是没有运气。我尝试了在互联网上找到的几乎所有代码,但仍然无法正常工作。
这是我的一些文件:
view / books / new.html.erb
<div class="container">
<h2>Create a new book</h2>
<%= form_with model: @book,url: create_new_book_path do |f| %>
<% if @book.errors.any? %>
<ul>
<% @book.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
<% end %>
<div class="form-group row">
<%= label_tag(:title,"Title:",class: "col-sm-2 col-form-label") %>
<div class="col-sm-10">
<%= f.text_field :title,class: "form-control" %>
</div>
</div>
<div class="form-group row">
<%= label_tag(:price,"Price:",class: "col-sm-2 col-form-label") %>
<div class="col-sm-10">
<%= f.text_field :price,class: "form-control" %>
</div>
</div>
<div class="form-group row">
<%= label_tag(:subject_id,"Subject:",class: "col-sm-2 col-form-label") %>
<div class="col-sm-10">
<%= f.collection_select :subject_id,@subjects,:id,:name,class: "form-control" %>
</div>
</div>
<div class="form-group row">
<%= label_tag(:description,"Book description:",class: "col-sm-2 col-form-label") %>
<div class="col-sm-10">
<%= f.text_area :description,class: "form-control" %>
</div>
</div>
<%= submit_tag "Create book",class: "btn btn-success" %>
<%= link_to "Cancel",books_path,class: "btn btn-danger" %>
<% end %>
<br/>
</div>
books_controller.rb
class BooksController < ApplicationController
def index
@books = Book.all
end
def show
@book = Book.find(params[:id])
end
def new
@book = Book.new
@subjects = Subject.all
end
def create
@book = Book.new(book_params)
end
def book_params
params.require(:book).permit(:title,:price,:subject_id,:description)
end
def edit
@book = Book.find(params[:id])
@subjects = Subject.all
end
def update
@book = Book.find(params[:id])
if @book.update_attributes(book_params)
redirect_to action: "index"
else
@subjects = Subject.all
render action: "edit"
end
end
def destroy
Book.find(params[:id]).destroy
redirect_to action: "index"
end
end
routes.rb
get 'books/new',to: 'books#new',as: 'new_book'
post 'books/create',to: 'books#create',as: 'create_new_book'
view / layouts / application.html.erb
<main role="main">
<%= yield %>
</main>
我真的不知道我要得到什么错误,感谢您的回答!
解决方法
尝试将它们放在这样的闪光灯中并在您的视图中呈现
def create
@book = Book.new
if @book.update(book_params)
flash[:notice] = 'success'
redirect_to action: 'index'
else
flash[:alert] = @book.errors.full_messages.join(',')
redirect_to action: 'index'
end
end
,然后在您的视图中呈现出类似的闪光
<% if flash[:notice]%>
<span class='notice'><%= flash[:notice] %></span>
<% end %>
<% if flash[:alert]%>
<span class='alert'><%= flash[:alert] %></span>
<% end %>