我试图保存数据,但在提交数据时,它只是刷新页面,但实际上并未将数据存储在表中。甚至也不会给出任何错误。我想要做的是保存数据后,控制应该在空白文本框的同一页面上。数据未保存在Rails应用程序中
使用Ruby 2.4.1,Rails的5.1.3,SQLITE3
这是feedback_controller.rb
class FeedbackController < ApplicationController
def new
@feedback = Feedback.new
end
def create
@feedback = Feedback.new(feedback_params)
redirect_to root_path
respond_to do |f|
if @feedback.save
f.html {redirect_to @feedback, notice: 'feedback submitted'}
f.json {render :new, status: :created, location: :@feedback}
else
f.html {render :new }
f.json {render json: @feedback.errors, status: :unprocessable_entity}
end
end
end
private
# def set_feedback
# @feedback = Feedback.find(params[:id])
# end
def feedback_params
params.require(:feedback).permit(:name, :email, :message)
end
end
的内容这里是new.html.erb文件。
<%= form_with scope: :feedback, url: feedback_new_path, local: true do |form| %>
<% if @feedback.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(feedback.errors.count, "error") %> prohibited this feedback from being saved:</h2>
<ul>
<% @feedback.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :name %>
<%= form.text_field :name, id: :feedback_name %>
</div>
<div class="field">
<%= form.label :email %>
<%= form.text_field :email, id: :feedback_email %>
</div>
<div class="field">
<%= form.label :message %>
<%= form.text_area :message, id: :feedback_message %>
</div>
<div class="actions">
<%= form.submit "Submit Feedback"%>
</div>
<% end %>
<%= link_to 'Home', root_path %>
这是彪马服务器上的日志中说,同时存储数据:
Started POST "/feedback/new" for 127.0.0.1 at 2017-09-14 21:33:41 +0530
Processing by FeedbackController#new as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Dk1sGiKYryIOeU6HyO7zeX6wqXazj9BUfooJgIDH1JjHxuKwA5MT0E6zvuwFYXGA8xEOz+tGAiXWySKv7voKvg==", "feedback"=>{"name"=>"sheshang", "email"=>"[email protected]", "message"=>"this is demo message"}, "commit"=>"Submit Feedback"}
Rendering feedback/new.html.erb within layouts/application
Rendered feedback/new.html.erb within layouts/application (3.8ms)
Completed 200 OK in 75ms (Views: 55.2ms | ActiveRecord: 1.3ms)
除了这个问题,我想知道如何调试Rails应用程序。就像在C或其他程序中一样,我们用printf语句来检查控件是否进入内部。我们如何在Rails中做到这一点?
我是该技术的新学员。所以我不知道我应该得到什么,反馈或反馈。假设我添加了资源:在我的routes.rb中反馈。那又怎么样? – Sheshang
你是否按照我的建议更新了你的'form_with'?有什么结果? – jvillian
是的,我确实更新过。并且我得到了一些我认为可以解决的依赖性错误。让我这样做。我会稍后让你知道 – Sheshang