2

モデル記事があります。

移行ファイル:

class CreateArticles < ActiveRecord::Migration
  def change
    create_table :articles do |t|
      t.string :name
      t.string :description
      t.string :body
      t.string :keyword
      t.integer :price
      t.integer :count_text
      t.integer :total_price
      t.timestamps
    end
  end
end

私はArticlesController2つの標準的な方法newを持っていますcreate

私はnew.html.erbファイルを作成し、フォームヘルパーを使用しました。ただし、フィールドとcount_text total_priceは自動的に生成する必要があります(price * count_text)Count_text-は本文のサイズです。ユーザーがフィールドの本文にテキストを入力すると、テキストが計算されてから価格が乗算され、レコードの作成を確認する前にユーザーに表示されます。どうやって作るの?

4

2 に答える 2

2

これらの2つの列に仮想属性を使用することをお勧めします。興味のある方はこちらをチェックしてください。

私自身は初心者ですが、他の人があなたが関数を構築するのを手伝ってくれると確信しています。仮想属性はあなたが探しているもののようです。

于 2011-11-27T17:24:01.303 に答える
0

質問を理解している限り、Articleレコードを作成する前にtotal_price(count_text * price)を表示する必要があります。レール側で合計価格を計算すると、ユーザーが価格を確認して記事をキャンセルする可能性があるため、不要なサーバー呼び出しが含まれます。記事の。あなたの問題は、合計金額を表示するために計算する小さな関数を書くことができるjavascript/jqueryを使用して簡単に解決できます。ラベルに金額を入れてみましょう。あなたは私が推測する以下のこのコードでいくつかのアイデアを得ることができます:

<html>
<head>
<title> Demo Article </title>
<script src="jquery-1.5.1.min.js" type="text/javascript" ></script>
<script type="text/javascript">
$(document).ready(function() {
$("#txtBody").focusout(
function()
{
var count, total_price;
count = $("#txtBody").val().length; // get length of the text in the textarea
total_price = count * $("#price").val(); // multiple with the price per character
$("#txtBody").after('<br><mark> Total Price : ' + total_price +"</mark>"); // display the total price
}
)
$("#txtBody").focus(
function()
{
$("mark").remove(); // removes the total price if the body id currently edited
}
)
});
</script>
<style>
mark {font-size:1.875em;color:white;background-color:#DC143C;}
</style>
<head>
<body>
Price: <input type="text" readonly="true" id="price" value="7")><br>
Body : <textarea cols="30" id="txtBody"> </textarea>

</body>
</html>
于 2011-11-28T09:58:47.967 に答える