[英]Rails- Create action does not saving record in database
I'm developing a web project in Rails.我正在 Rails 中开发一个 web 项目。 There has a movies, books and series and users can write reviews about them.
有电影、书籍和系列,用户可以写关于它们的评论。 I created review_controller and inside that i created new action but action does not working.
我创建了 review_controller 并在其中创建了新操作,但操作不起作用。 In the view side I use simple_form.
在视图方面,我使用 simple_form。 The page of new_review_path is coming but record does not save in database.
new_review_path 的页面即将到来,但记录未保存在数据库中。 And also update action does not working either.
而且更新操作也不起作用。
reviews_controller.erb评论控制器.erb
class ReviewsController < ApplicationController
@review = Review.new
def index
@reviews = Review.all
end
def show
@review = Review.find(params[:id])
end
def new
@review = Review.new
end
def create
@review = Review.new(review_params)
if @review.save
redirect_to action: 'index'
else
render :new, notice: 'Error.'
end
end
def edit
@review = Review.find(params[:id])
end
def update
@review = Review.find(params[:id])
if @review.update(review_params)
redirect_to @review
else
render :edit
end
end
private
def review_params
params.require(:review).permit(:title, :content)
end
end
new.html.erb新的.html.erb
<div class="container">
<div class="row justify-content-md-center mt-5">
<div class="col-6">
<h1>New Review</h1>
<%= simple_form_for @review do |f| %>
<div>
<%= f.label :title %><br>
<%= f.text_field :title, class: 'form-control' %>
<% @review.errors.full_messages_for(:title).each do |message| %>
<div style="color: red;"><%= message %></div>
<% end %>
</div>
<div>
<%= f.label :content, class: 'mt-4' %><br>
<%= f.text_area :content, class: 'form-control' %>
<% @review.errors.full_messages_for(:content).each do |message| %>
<div style="color: red;"><%= message %></div>
<% end %>
</div>
<div>
<%= f.button :submit, class: 'btn btn-primary mt-4' %>
</div>
<% end %>
</div>
</div>
</div>
_form.html.erb _form.html.erb
<div class="container">
<div class="row justify-content-md-center">
<div class="col-5">
<%= simple_form_for @review do |form| %>
<div>
<%= form.label :title %><br>
<%= form.text_field :title %>
<% @review.errors.full_messages_for(:title).each do |message| %>
<div><%= message %></div>
<% end %>
</div>
<div>
<%= form.label :content %><br>
<%= form.text_area :content %><br>
<% @review.errors.full_messages_for(:content).each do |message| %>
<div><%= message %></div>
<% end %>
</div>
<div>
<%= form.submit %>
</div>
<% end %>
</div>
</div>
</div>
routes.rb路线.rb
Rails.application.routes.draw do
get 'reviews/index'
get 'reviews/new'
devise_for :users
root 'home#index'
resources :reviews
end
I solved this problem doing by belongs_to:user, optional: true
After Rails 5, user association need to be this relation.我通过
belongs_to:user, optional: true
解决了这个问题 在 Rails 5 之后,用户关联需要是这个关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.