0

つまり、Products、Carts、LineItemsのクラスがあります-標準の関係(製品とハートには多くのラインアイテムがあり、その逆も同様です)。ラインアイテムのプロパティの1つはサイズです。商品をより詳細に表示すると、サイズの選択を求めるフォームがあります。フォームは次のようになります(選択ボックスには任意の値があります)

<%=  form_for(:line_item, :url => {:controller => "line_items", :action => 'create', product_id: @product.id }) do |f| %>
<ul>
    <li>Size: <%= f.select(:size, 0..99) %></li>
    <li><%= link_to 'Add to Cart', line_items_path(product_id: @product.id), :method => :post %></li> <!-- This comes up later in the question -->
    <li><%= submit_tag "Add to Cart" %></li> <!-- using this Add to Cart button for now -->
</ul>
<% end %>

私の最初の質問は、問題を解決することです。line_itemsのcreate定義には、次の2行があります。問題は、選択したサイズに関係なく、1として記録されることです。0を選択しても、99を選択しても、ロジックの欠陥は何ですか。ここ?私はかなり大きな間違いを犯していると確信しています、私は答えを適切に検索するために私が間違っていることを十分に知らないだけです

@temp_size = params[:line_item]
@line_item.size = @temp_size.size

そして私の2番目の質問は、ボタンではなくリンクが欲しいということです-フォームの4行目(中央のリスト項目)のようなリンクでこれを実行できるようにしたいです-使用できるプロパティはありますか送信ボタンを置き換えるには?

ありがとう!

4

1 に答える 1

1

最初の質問:

params[:line_item]送信されたフォームの入力フィールドからのデータを含むハッシュです。

@temp_size.sizeHash#sizeハッシュ内のキーと値のペアの数を返す呼び出しです。フォームには入力フィールドが 1 つしかないため、:size@temp_size.sizeに関係なく常に 1 が返されます。

:size入力フィールドの値を割り当てるには、次のようにします。

@temp_size = params[:line_item][:size] 

2 番目の質問:

CSS を使用して、送信ボタンの外観を変更できます。リンクがクリックされたときにフォームを送信するために、Javascript クリック ハンドラーを使用することもできます。これはそれ自身の質問でなければなりません。

于 2013-01-18T07:22:33.383 に答える