2016-04-20 56 views
0

表單提交後,我的控制器會檢查是否存在某些情況。在我的情況下,有三個人:如何在不呈現或重定向的情況下顯示消息(aka flash)

  1. 如果他的目標的可能性用戶豐富的最大跟蹤
  2. 如果用戶已經跟蹤這個對象
  3. 一切正常,並請求被添加到隊列

我想通知用戶有關這些條件。我有remote: true的形式,現在我通過渲染js: "alert('info')"來顯示信息,但它看起來很醜。我不想在某處重定向用戶,或者在表單提交後重新提交表單。我只是想顯示'閃光燈'的消息,並等待來自用戶的另一個請求。我怎麼做到的?

回答

1
  1. 簡單的方法:

在表單頁面頂部,有一個div來存儲信息:

在您的要求在控制器中爲遠程請求處理程序,計算要顯示的消息。

def create 
    ... 
    @message = get_message 
    ... 
end 

由於它是一個ajax請求,您的視圖將是一個.js.erb文件(假設您使用的是erb)。在該視圖中,只需設置消息的div內容@message:

# create.js.erb 
$('#message').text("#{@message}"); 
  • 高級的方法:
  • 替代地,如果要更豐富的格式,創建部分用於消息格式化並將其呈現在js.erb文件中。

    例如,我用引導我的風格,我可以使消息看起來像一個「x」的警報,關閉它 - 所以我創建了一個局部呈現警報:

    # views/home/_message.html.erb 
    <div class='alert alert-warning alert-dismissible'> 
        <%= message %><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
    </div> 
    

    在你的js.erb中,你可以這樣做,

    # create.js.erb 
    $("#message").html("<%= escape_javascript(render partial: 'home/message', locals: { message: @message }) %>"); 
    
    +1

    先進的一個就是我需要的!謝謝! – nobilik

    0

    如果您想使用remote ajax請求,您需要在前端處理自己的問題。如果你希望它看起來很漂亮,你需要在你的頁面上設計一個彈出式模式窗口或某種顯示塊來顯示消息。默認爲style='display:none'

    然後你需要寫一個JS方法來顯示它並返回該方法。像這樣的東西。 (假設你使用jQuery)

    $('#messageblockid .content').text("your message goes here"); 
    $('#messageblockid').show(); 
    
    相關問題