[英]Rails 3, remote form redirecting, want to stay on page, missing template error?
我想我一定是在做一些愚蠢的事。 不幸的是,由於愚蠢的性質,我無法分辨出我愚蠢的是什么。 所以,你可以猜到,我覺得很愚蠢。
請幫我克服這個愚蠢的磚牆。
我希望能夠點擊提交按鈕,而不是離開頁面,而且,該頁面甚至沒有嘗試重新加載! 這是由ajax完成的,我已經閱讀了幾個指南,我甚至讓它在之前的另一個項目上工作。 在這個例子中,我用scriptaculous隱藏了div。 在之前版本的ajax表單提交中我使用了(偽代碼)
render update do |page|
page replace html with this div
end
但是這次我實際上並沒有替換div或者任何東西,我只是用一個onclick事件的scriptaculous隱藏它....
我想要的就是讓表格實際提交並讓它消失。
所以我正在處理一個表單,這是表單標簽:
<%=form_for :call_back_request, :remote => true, :url => {:action => "call_back_request_cbrsent"} do |c| %>
你可以看到它是:remote => true
我有各種表單輸入字段,我認為或多或少不相關,這里是相關部分:
這是一個提交按鈕的一部分,所以我在這里包含它:
<%= 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
現在,問題是,只要我疲憊的頭腦可以看到回報是虛假的; &remote => true(具體在提交標簽中)什么都不做。 我的大腦緩存完全阻塞,我無法思考。 感覺我需要退后一步,因為我沒有看到這里的問題。
感謝任何努力通過我的ramblings在這里給我一個答案的人,我感謝我在那里有很多華夫餅干。 真對不起。 精疲力竭。 想想Jonestone博士說:“對不起,我沒有時間寫一篇簡短的文章” - 其中有一點是在這里發生的。
只是為了澄清,目前我在遠程表單上丟失了模板錯誤...我試着添加它
render :nothing => true
但是,它不起作用。
它在渲染空白頁面方面做得很好,我不知道這個問題的重點是什么,所以我假設它對我來說不正常,或者由於某些原因它在這種情況下不合適。
嘗試(在您的控制器中)
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.