无法使用update_all保存params

时间:2014-06-25 20:57:04

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个将数字转换为单词的javascript,它使用输入id =西班牙语。 http://jsfiddle.net/fiddleyetu/RQ7R4/74/

我创建了其他javascript,将输入值显示为text_field_tag,如重复值。

 <script>window.onload=function(){document.getElementById('money_word').value=document.getElementById('Spanish').value;}</script>

我正在尝试更新“动作节目”中的一列,但没有更新任何内容,似乎没有阅读money_word参数

这是表格

|invoices|
  |id|  |money|   |money_word|
    1     1000      one thousand
    2     2000      two thousand
    3     3000      three thousand 

这是控制器

def show
  @invoice=  Invoice.find[params[:id]]
  @money= params[:money_word].to_s
  @query=  Invoice.update_all(["money_word = '#{@money}' ",@money  ], ["id = ?",params[:id] ])
end

以下是视图:

 <input id="Spanish" NAME="Spanish" class="input_blank" value="ONE THOUSAND"
 <script>window.onload=function(){document.getElementById('money_word').value=document.getElementById('Spanish').value;}</script>

 <%= text_field_tag "money_word", @money  %> 

这是日志:

Processing InvoiceController#show (for 127.0.0.1 at 2014-06-25 15:39:44) [GET]
  Parameters: {"id"=>"57"}
  Invoice Load (0.1ms)   SELECT * FROM `invoices` WHERE (`invoices`.`id` = 1) 
  Invoice Update (34.7ms)   UPDATE `invoices` SET money_word = '' WHERE (id = '1') 

Rendering invoice/show

请有人可以帮助我或建议我以其他方式保存号码的翻译?

2 个答案:

答案 0 :(得分:1)

由于您要更新单个记录,因此没有理由使用update_all。只需在已经加载的@invoice上调用update_attributes:

@invoice.update_attributes(money_word: @money)

答案 1 :(得分:1)

不确定为什么要在show action中执行此操作,但请尝试:

params[:invoice][:money_word]

而不是

params[:money_word]