2017-06-17 16 views
-2

默認情況下,rails具有控制器CRUD操作和相應的路由。例如,我有一個簡單的書店應用程序,我有一本書和一個類別。我想通過主頁上的側邊欄顯示所有類別。每個類別都是一個下拉元素,並附有書籍計數整數。在擴展下拉菜單時,我想看到屬於當前版本的書籍標題並充當鏈接。這很容易實現。如何管理停留在同一頁面上的列表元素

的問題是如何添加下隱藏着一種形式,比方說,一個+號,旁邊貼靜態下拉節標題「類別」,如果有沒有?

在類別控制器中創建操作的表單,該類型允許創建新類別並立即顯示,而無需重定向到創建類別視圖和重定向回。

請告知任何可靠的解決方案或教程鏈接。非常感謝。

回答

0

它看起來像你正在尋找一個AJAX表單。在rails中,你可以用form_for ... remote生成這個:true。這可以在刷新頁面時調用控制器方法。然後你可以返回一個響應並使用JS來更新用戶所在的頁面。

例如,在您看來

<div class="hidden"> 
    <%= from_for @category, remote:true %> 
    Your form here 
    <% end %> 
</div> 

中加入某些JavaScript來取消隱藏窗體點擊您的按鈕時。在使用軌道默認f.js控制器

def create 
#normal create stuff 
    if save 
    respond_to do |f| 
     f.js 
     f.html {#re render page just in case JavaScript is disabled} 
    end 
    else 
    #handle error 
    end 
end 

,Rails會調用create.js.erb該文件的文件將有機會獲得你做出任何公開的變量,例如@Category。

然後你可以做財產以後沿

$('.append_category').append('<%= j render 'your category layout partial', locals: { category: @category }%>'); 

行,或者如果你只需要類別鏈接

$('.append_category').append('<%= link_to @category %>'); 

一個很不錯的指南可以在這裏找到http://guides.rubyonrails.org/working_with_javascript_in_rails.html

注意:取決於您的rails版本,您可能需要將ActionController :: MimeResponds添加到您的application_controller.rb(我知道這在rails 5中是必需的)

+0

非常感謝。我會盡量使用它 –

相關問題