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

我有ArticlesController两种标准方法newcreate

我做了new.html.erb文件并使用了表单助手。但是字段和count_text total_price 需要自动生成(price * count_text) Count_text - 是body line 的大小。用户在字段正文中输入文本,计算文本然后乘以价格并在确认创建记录之前显示给用户。怎么做?

4

2 回答 2

2

您可能希望对这两列使用虚拟属性。如果你有兴趣检查这里

我自己是新手,但我相信其他人可以帮助您构建功能。虚拟属性似乎是您正在寻找的。

于 2011-11-27T17:24:01.303 回答
0

据我理解的问题,您想在创建文章记录之前显示总价格(count_text * price)。在rails端计算总价格将包括不必要的服务器调用,因为用户可能会在看到价格时取消文章的文章。使用 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 回答