Ruby on rails 如何从表单发送结果:remote=>;在Rails 3中为true返回页面?
这是我的控制器的一部分:Ruby on rails 如何从表单发送结果:remote=>;在Rails 3中为true返回页面?,ruby-on-rails,ajax,forms,Ruby On Rails,Ajax,Forms,这是我的控制器的一部分: if @invite.save UserMailer.invite_email(@invite).deliver respond_with do |format| format.html do if request.xhr? render :text => "sent" , :layout => false else flash[:
if @invite.save
UserMailer.invite_email(@invite).deliver
respond_with do |format|
format.html do
if request.xhr?
render :text => "sent" , :layout => false
else
flash[:notice] = "Successfully created invite."
redirect_to @invite
end
end
end
else
render :action => 'new'
end
我的看法是:
<h3>Invite a Friend</h3>
<%= form_for @invite, :remote => true do |f| %>
<%= f.email_field :recipient_email, :class => 'submittable' %></br>
<%= f.submit %>
<% end %>
邀请朋友
真do | f |%>
'可提交'>
我需要做些什么才能使文本“sent”或我放在那里的任何东西显示在视图的表单正上方
我尝试了
:update=>:status
,但没有成功。简单的回答是,您必须发回执行的javascript,而不是像“sent”那样发回文本。使用您的示例(假设您使用的是jQuery):
if request.xhr?
render:text=>“$('#invite_form')。在('Sent!');”之前,:layout=>false
其他的
...
结束
(确保表单具有id
,并使用该id代替#invite_表单
)
由于您正在表单上使用remote:true
,因此它应该自动执行响应。不过,总的来说,我认为最好清理一下响应逻辑,并将xhr响应分离到自己的模板中。请查看“使用带有“的响应”部分下的本页,了解一些重要示例:
@mirthlab——我明白了……我发现使用Rails 2时,使用:update….会容易得多。。。。我认为Rails使用了prototype,我应该使用jQueryGem来代替吗?使用prototype没有错,只是
:text=>“…”
行必须使用prototype语法。默认情况下,Rails 3.1将随jQuery一起提供(如所述),因此可能值得了解它。@mirthlab--我明白了,所以以前我们不必编写任何javascript,对吧,但现在我们学习jQuery使用javascript而不是使用Rails?谢谢…@mirthlab——哪种方法,还有一种使用create.js.erb的操作系统方法有什么区别或好处?@mirthlab,我明白了,如果我使用responses_并将其放入create.js.erb中,会这样吗?
if request.xhr?
render :text => "$('#invite_form').before('<div>Sent!</div>');" , :layout => false
else
...
end