【发布时间】:2013-08-05 02:01:16
【问题描述】:
我正在尝试创建一个单页/视图应用程序。我提交了一个创建简单推文对象的表单:
_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 数据)。
create.js.erb
<% if @tweet.save %>
$("#schedule-tweet-form").remove();
$('#schedule-tweet-form-container').append("<%= j render 'form' %>");
<% end %>
在过去的几个小时里,我一直在为此绞尽脑汁,但我从其他各种堆栈溢出问题中尝试过的其他方法都没有奏效。感谢您的帮助。
【问题讨论】:
标签: javascript jquery ruby-on-rails ruby ajax