簡體   English   中英

Rails 3,遠程表單重定向,想留在頁面上,缺少模板錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM