选择表的onchange错误

时间:2010-10-25 09:34:28

标签: ruby-on-rails

我正在尝试添加onchange处理程序以查看当前选择了哪个选项并将其放入文件中。 我怎么能这样做?

<select id="subtable" name="subtable" size="20" style="width: 400px"> 
<%= options_from_collection_for_select(@hauses, 'id', 'timebuild', @hauses.first.id), {},  {:onchange => catch()} ) %>
</select> 

控制器就是这个

def index
@hauses = Hauses.find(:all)
end

def catch
@hs = Hauses.find(params[:hauses_id])
file = File.new("catch.txt","ab")
file.puts(@hs)
file.close
end

它显示未定义方法`catch'的错误

感谢您提供任何指导

1 个答案:

答案 0 :(得分:0)

  • 视图无法调用控制器的方法,这就是他找不到方法catch的原因。
  • 您可以将该方法放入帮助程序,但这意味着此方法将返回将填充到onchange属性中的Javascript代码。
  • 如果你放{:onchange =&gt; 'catch()'}这将寻找名为catch的 Javascript 方法。

Onchange将在浏览器中执行,因此如果您想在用户更改select字段的值时调用操作“catch”,那么您必须创建一个AJAX调用来执行此操作。请参阅AJAX on Rails以帮助您入门。

另外,onchange属性必须包含在select-tag中,而不是选项中。