我想我必须做些蠢事。不幸的是,由于愚蠢的性质,我无法分辨出我愚蠢的是什么。所以,正如你猜测的那样,我觉得非常愚蠢。
请帮助我克服这种愚蠢的砖墙。
我希望能够点击提交按钮,而不是离开页面,而且该页面甚至没有尝试重新加载!这是由ajax完成的,我已经阅读了几个指南,我甚至让它在之前的另一个项目上工作。在这个例子中,我用scriptaculous隐藏了div。在之前版本的ajax表单提交中,我使用了(伪代码)
render update do |page|
page replace html with this div
end
但是这次我实际上并不是要替换div或者其他东西,我只是用一个onclick事件将其隐藏起来....
我想要的是表格实际提交并让它消失。
所以我正在处理一个表单,这里是表单标签:
<%=form_for :call_back_request, :remote => true, :url => {:action => "call_back_request_cbrsent"} do |c| %>
正如您所看到的那样:remote =&gt;真
我有各种表单输入字段,我认为或多或少不相关,这是相关部分:
这是一个属于提交按钮的字段,因此我将其包含在此处:
<%= hidden_field_tag :instructor_id, "empty", :id=>"instructor_hidden_field" %>
这是提交按钮,因为你可以看到我正在使用scriptaculous来隐藏div,这就是提交按钮所在的div。
它可能会影响这一点,而不是从这个stackoverflow问题中删除它我已经包含它。
<%=c.submit
:value=>"SEND",
:style=>"width:90px; height:33px; padding-bottom:0; font-size:1em;",
:class=>"lpl-go-button lpl-go-button-submit",
:onclick=>"Effect.BlindUp('cbr_row_#{rp[:name]}'); document.getElementById('instructor_id').value = '#{rp[:instructor_id]}';return false;", :remote=>true %>
(我在这里添加了换行符,以防止你们不得不向右滚动)
来自控制器:
def call_back_request_cbrsent
@call_back_request = CallBackRequest.new(params[:call_back_request])
@instructor = Instructor.find_by_id(params[:instructor_id])
@call_back_request.instructor_id = params[:instructor_id]
@call_back_request.save
email = UserMailer.create_send_call_back_request(@call_back_request, @instructor)
email.set_content_type("text/html")
UserMailer.deliver(email)
end
现在,事情是,只要我疲惫的头脑可以看到回报是假的; &安培;遥控器=&gt; true(具体在提交标记中)不做任何事情。我的大脑缓存完全阻塞,我无法思考。感觉我需要退后一步,因为我没有在这里看到问题。
感谢任何人在这里努力通过我的电子邮件给我一个答案,我感谢我在那里有很多华夫饼干。真对不起。精疲力竭。想想Jonestone博士说“对不起,我没有时间写一篇简短的文章” - 其中有一点是在这里发生的。
只是为了澄清,目前我在远程表单上丢失了模板错误... 我尝试添加此
render :nothing => true
但是,它没有用。
它在渲染空白页面方面做得很好,我不知道这是什么意思,所以我假设它对我来说不正常,或者由于某些原因它在这种情况下不合适。
答案 0 :(得分:3)
尝试(在您的控制器中)
render :nothing => true
编辑:
啊,如果您有模板错误,您应该这么说。
我刚注意到你也要删除div。
那么你想做什么,它在你的控制器中:
def call_back_request_cbrsent
....
respond_to do |format|
format.html
format.js
end
end
然后在您的视图中制作一个call_back_request_cbrsent.js.erb
文件。这将包含用于删除该表单的JavaScript。它显然包含以下内容:
$("#form").remove()
...这是在jQuery中,但只是使用你一直用来删除表单的任何javascript。