2015-01-05 62 views
0

我正在研究基本上是使用Ruby on Rails的在線商店的應用程序。我有application.html.erb,其中包含與Ajax一起運行的籃子。點擊結賬按鈕後,它會重定向頁面主體以獲取新訂單。當顯示該視圖時,我希望結賬按鈕可以脫開。任何想法,我怎麼能做到這一點? 遵循局部在特定視圖的情況下隱藏部分按鈕

的意見/籃碼/ _basket.html

<% unless basket.queue_groceries.empty? %> 

<div class="basket"> Our basket</div> 
    <table> 
    <!-- START_HIGHLIGHT --> 
    <%= render(basket.queue_groceries) %> 

    <!-- END_HIGHLIGHT --> 

    <tr class="total_line"> 
     <td colspan="2">Total</td> 
     <!-- START_HIGHLIGHT --> 
     <td class="total_cell"><%= number_to_currency(basket.total_price) %></td> 
     <!-- END_HIGHLIGHT --> 
    </tr> 

    </table> 

    <!-- START_HIGHLIGHT --> 
    <%= button_to 'Check out', new_order_path, method: :get %> 
    <%= button_to 'Empty basket', basket, method: :delete, confirm: 'Are you sure?' %> 

然後的意見/佈局/ application.html.erb

<!-- START:head --> 
<!DOCTYPE html> 
<html> 
<head> 
    <!-- START_HIGHLIGHT --> 
    <title>Pragprog Books Online Store</title> 
    <!-- END_HIGHLIGHT --> 
    <!-- <label id="code.slt"/> --><%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> 

    <%= javascript_include_tag "application", "data-turbolinks-track" => true %><!-- <label id="code.jlt"/> --> 
    <%= csrf_meta_tags %><!-- <label id="code.csrf"/> --> 
</head> 
<!-- END:head --> 
<body class="<%= controller.controller_name %>"> 
<!-- START_HIGHLIGHT --> 
<div id="banner"> 
    <%= image_tag("logo.png") %> 
    <%= @page_title || "Pragmatic Bookshelf" %><!-- <label id="code.depot.e.title"/> --> 
</div> 
<div id="columns"> 
    <div id="side"> 
    <div id="basket"> 

    <%= render @basket %> 

    </div> 
    <ul> 
     <li><a href="http://www....">Home</a></li> 
     <li><a href="http://www..../faq">Questions</a></li> 
     <li><a href="http://www..../news">News</a></li> 
     <li><a href="http://www..../contact">Contact</a></li> 
    </ul> 
    </div> 
    <div id="main"> 
    <!-- END_HIGHLIGHT --> 
    <%= yield %><!-- <label id="code.depot.e.include"/> --> 
    <!-- START_HIGHLIGHT --> 
    </div> 
</div> 
<!-- END_HIGHLIGHT --> 
</body> 
</html> 
+0

我想這就是你要找的東西? [http://stackoverflow.com/questions/13395153/how-to-render-partial-on-everything-except-a-certain-action](http://stackoverflow.com/questions/13395153/how-to-渲染部分 - 除了某種行爲以外的任何部分) – Aventuris

回答

1

你可以這樣做以下檢查:

<%= button_to 'Check out', new_order_path, method: :get  # create a button 
    unless controller.controller_name == 'orders' &&  # unless controller is orders 
      %w(new create).include?(controller.action_name) # AND actions include new and create 
%> 

%w(new create)['new', 'create']數組的別名。我們檢查它是否包含當前操作名稱。如果是 - 我們不會顯示按鈕。

爲什麼要創建行動包括: 當你在你的控制器動作create失敗,你叫render :new,不將您重定向到新的行動,而只是將呈現模板。因此,儘管我們使用其他操作的模板,但操作仍然是create

+0

我做到了。當錯誤通知出現時,該按鈕仍然存在。看着你的建議幫助我學習了一些關於這些rails方法和一些ruby語法的使用。謝啦。 – vinibol12

+0

更新了錯誤消息渲染的答案。現在,如果'create'動作呈現錯誤消息和'new'模板,它也將被隱藏。 –

+0

謝謝。這次它效果很好。對不起,我的無知但你能分解這段代碼並解釋sintaxe是如何工作的嗎?由於我對Rails和編程一般都很陌生,所以我很努力地去理解。 – vinibol12

相關問題