2017-10-18 81 views
0

我使用Materialise的CSS芯片存儲的標籤爲我的視頻,其HTML是這樣:訪問Materialise的芯片響應

<%=simple_form_for @video do |form| %> 
<div id="spaceTags" class="chips chips-placeholder"> 
<div> 
<% end %> 

和JavaScript Intialization是這樣:

$('.chips').material_chip(); 
$('.chips-placeholder').material_chip({ 
placeholder: 'Enter a tag', 
secondaryPlaceholder: '+Tag', 
}); 

和我的控制器像這樣:

@video = Video.new(video_params) 
@video.uploader = current_user 
respond_to do |format| 
    if @video.save 
    format.html { redirect_to @video, notice: 'Video was successfully created.' } 
    format.json { render :show, status: :created, location: @video } 
    else 
    format.html { render :new } 
    format.json { render json: @video.errors, status: :unprocessable_entity } 
    end 
end 

如何檢索數據並在我的控制中訪問它滾筒?

+0

不熟悉material_chip但也許它在前端添加數據。唯一的方法是讓它返回到Rails服務器是通過一些Ajax的post/put請求。你需要寫JS來發送。控制器對前端沒有任何瞭解,因爲它以紅寶石居於服務器上。 – lacostenycoder

回答

0

無論何時添加/刪除/選擇芯片,Materialise CSS庫都會觸發事件。您可以觸發AJAX調用,讓您的Rails控制器知道客戶端發生了什麼。

或者,您可以等待所有交互的發生,並讓用戶通過單擊按鈕單擊來觸發AJAX請求。

您可以瞭解更多關於芯片的功能在這裏:

Materialize CSS Chips Documentation

$('.chips').on('chip.add', function(e, chip){ 
 
    // you have the added chip here 
 
    //Call AJAX to talk to Rails Controller 
 
    }); 
 

 
    $('.chips').on('chip.delete', function(e, chip){ 
 
    // you have the deleted chip here 
 
    //Call AJAX to talk to Rails Controller 
 
    }); 
 

 
    $('.chips').on('chip.select', function(e, chip){ 
 
    // you have the selected chip here 
 
    //Call AJAX to talk to Rails Controller 
 
    });

+0

當我嘗試通過AJAX進行調用時,其他表單數據將單獨發送,並將AJAX數據單獨發送,導致執行相同的代碼兩次,但數據不完整,因爲它們都應該一起執行相同的代碼。 – Sarthak

+0

您可以使用回調更新其他表單上的隱藏表單元素,以便將它們作爲一個請求一起發佈。基本上可以使用回調中更改的值,並根據需要使用它。你甚至可以將它存儲在一個範圍變量中,並在發出AJAX請求時使用它。 –