Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从表单发送结果:remote=>;在Rails 3中为true返回页面?_Ruby On Rails_Ajax_Forms - Fatal编程技术网

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