我正在研究rails guide的入门,并在评论中添加错误验证,但如果我有错误,则不会重新填充表单。
我发布了/car/show.html.erb
我使用flash检查错误(正常工作)但如果错误,我的表单将变空。
我的comments_controller.rb
控制器的代码:
def create
@car = Car.find(params[:car_id])
if @comment = @car.comments.create(params[:comment].permit(:email,:sujet,:commentaire))
flash[:error] = @comment.errors
flash.keep[:error]
render 'car/show'
else
redirect_to car_path(@car)
end
end
在cars / show.html.erb下面
<h1>Fiche détaillée</h1>
<%= @car.marque %><br>
<%= @car.modele %><br>
<%= @car.nbkm %><br>
<%= @car.couleur %><br>
<%= @car.disponibilite %><br>
<hr>
<h1><%= pluralize(@car.comments.count,'Commentaire') %></h1>
<% @car.comments.each do |k| %>
<%= k.email %><br>
<%= k.sujet %><br>
<%= k.commentaire %><br>
<hr>
<% end %>
<hr>
<h1>Ajouter votre commentaire</h1>
<div style='width:300px;'>
<% flash.each do |key, msg| %>
<p class="bg-danger" style='padding:10px;'><%= pluralize(msg.count,'error') %></p>
<ul><% msg.full_messages.each do |m|%>
<li><%= m %></li>
<% end %>
<% end %>
</ul>
<%= form_for ([@car,@car.comments.build]) do |co| %>
<%= co.label :'Email' %><br>
<%= co.text_field :email , class: 'form-control' %><br>
<br>
<%= co.label :'Sujet' %><br>
<%= co.text_field :sujet , class: 'form-control'%><br>
<br>
<%= co.label :'Commentaire' %><br>
<%= co.text_area :commentaire , class: 'form-control' %><br>
<br>
<%= co.submit :'Envoyer votre commentaire', class: 'btn btn-info'%>
<% end %>
当控制器不相同时,我不知道如何处理渲染。
答案 0 :(得分:0)
试试这个, 修改强>
def create
@comment = Comment.new(params[:comment].permit(:email,:sujet,:commentaire))
if !@comments.save
flash[:error] = @comment.errors
flash.keep[:error]
render 'car/show'
else
redirect_to car_path(@car)
end
end
汽车/表演方法:
def show
@car = Car.find(params[:id])
@comment = @car.comments.build
end
更改
<%= form_for ([@car,@car.comments.build]) do |co| %>
要
<%= form_for @comment do |co| %>