我正在尝试创建一个单页/视图应用程序。我有一个提交的表单,它创建了一个简单的推文对象:
_form.html.erb
<div id="schedule-tweet-form">
<%= simple_form_for @tweet, :remote => true do |f| %>
<%= f.input :text, :input_html => {:cols => 60, :rows => 6} %>
<%= f.input :scheduled_time %>
<%= f.button :submit, "Schedule Tweet", :class => "f-button" %>
<% end %>
</div>
(scheduled_time 是一个日期时间类型,有多个选择框)
表单提交工作正常,并在我的数据库中创建一行没有问题。问题是提交后,表单中的数据并没有被清除。推文的文本仍在输入文本框中,并且预定时间仍然选择了其各自的选择框。
这是我的控制器:
tweets_controller.rb
class TweetsController < ApplicationController
def index
@tweet = Tweet.new
end
def create
@tweet = Tweet.new(params[:tweet])
@tweet.user = current_user
respond_to do |format|
if @tweet.save
@tweet.tweet_at_scheduled_time
flash[:notice] = "Tweet has been scheduled"
format.html { render 'index' }
format.js
else
format.html { render 'index' }
format.js { render 'reload' }
end
end
end
end
这是呈现部分的视图:
index.html.erb
<div id="schedule-tweet-form-container">
<%= render 'form' %>
</div>
我尝试使用一些 jQuery 删除表单并在提交表单并调用 create 操作后重新渲染一个新表单,但奇怪的是,在调用“append”后表单返回了提交的推文信息(文本和 schedule_time输入字段中的数据)。
创建.js.erb
<% if @tweet.save %>
$("#schedule-tweet-form").remove();
$('#schedule-tweet-form-container').append("<%= j render 'form' %>");
<% end %>
在过去的几个小时里,我一直在为此绞尽脑汁,但我从其他各种堆栈溢出问题中尝试过的其他方法都没有奏效。我很感激帮助。