これが私の最初の質問なので、できるだけ具体的にできることを願っていますが、厳しくしないでください。
私はRailsを使用したアジャイルWeb開発を行っており、プログラミングは非常に初めてです。
注文/新規ページを表示しているときに[チェックアウト]ボタンを非表示にして、ユーザーが購入するのに不快なことをしないようにします。
現時点では、インスタンス変数がどのように機能するかはよくわかりません。ビューまたはorderscontroller#newのどこでインスタンス変数を宣言しても、常にtrueに検証されるようです。
ビューでインスタンス変数を使用してdivを非表示にすると(hidden_div_if(condition == true))、ボタンは常に非表示になるため、これが当てはまるようです。
それだけでなく、私がそうするとき:
<%= hidden_div_if( @hide_checkout_button == false ) do %>
<td><%= button_to 'Empty cart', cart, :method => :delete,
:confirm => 'Are you sure?' %></td>
<% end %>
<%= hidden_div_if( @hide_checkout_button == true ) do %>
<td><%= button_to "Checkout", new_order_path, :method => :get %></td>
<% end %>
両方のボタンが非表示になります!どうしてそんなことができるの!?!
この例では、変数宣言をviews\orders_form.html.erbに配置しました。
<%= @hide_checkout_button = true %>
<%= form_for(@order) do |f| %>
<% if @order.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@order.errors.count, "error") %>
prohibited this order from being saved:</h2>
<ul>
<% @order.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
...
これがこの問題の解決策に関するディスカッションフォーラムですが、私には機能せず、理由はわかりません:http: //pragprog.com/wikis/wiki/Pt-G-2/version/35
そして、ここに質問自体があります:
チェックアウト画面が表示されているときにサイドバーの[チェックアウト]ボタンをクリックするとどうなりますか?この状況でボタンを無効にする方法を見つけることができますか?(ヒント:コントローラーで設定された変数は、レイアウトとパーシャル、および直接レンダリングされたテンプレートで使用できます。)
さらに詳しい情報が必要な場合は、お問い合わせください。どの程度の詳細を提供するか、またはどの情報が重要かはよくわかりません。
前もって感謝します :-)
def new
@cart = current_cart
if @cart.line_items.empty?
redirect_to store_url, :notice => "Your cart is empty"
return
end
puts 34
@hide_checkout_button = true
@order = Order.new
puts 37
respond_to do |format|
format.html # new.html.erb
format.json { render json: @order }
end
end
2012-11-13に127.0.0.1のGET"/assets/logo.png"を開始しました20:33:40+0000提供されたアセット/logo.png-304未変更(1ms)[2012-11-13 20:33: 40]警告コンテンツ-応答本文の長さを判別できませんでした。応答のコンテンツの長さを設定するか、Response#chunked = true * 34 37 * /orders/newを設定します
2012-11-1320:33:49に127.0.0.1のGET"/orders/new"を開始しました+0000OrdersController#newによるHTMLとしての処理←[1m←[36mCartLoad(1.0ms)←[0m←[1mSELECT " carts"。*FROM"carts "WHERE"carts"。"id"=?LIMIT1←[0m[["id"、63]]←[1m←[35m(1.0ms)←[0mSELECT COUNT(*)FROM "line_items"WHERE"line_items"。"cart_id" = 63