Observe_field错误

时间:2011-12-04 18:16:20

标签: ruby-on-rails

``enter code here<%= form_for(@person) do |f| %>
  <% if @person.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@person.errors.count, "error") %> prohibited this person from being saved:</h2>

      <ul>
      <% @person.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :country_id %><br />
    <%= f.collection_select :country_id, Country.all(:order => "name"), :id, :name, :prompt => "-- Select a Country --"%>
    <%= observe_field (:person_country_id, :url => {:action => "update_state_div"}, :with => 'person_country_id'%>
  </div>
  <div class="field">
    <%= f.label :state_id %><br />
    <%= f.collection_select :state_id, State.all(:order => "name"), :id, :name, :prompt => "-- Select a State --"%>


    <%observe_field 'person_country_id', :url => {:action => "update_state_div"}, :with => 'person_country_id'%>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

请注意,observe_field似乎有问题,我期待它做的是当我为国家输入一个值时,该国家的州显示

2 个答案:

答案 0 :(得分:3)

看起来你在嵌入Ruby时出错:<% observe_field %>什么都不插入,而<%= observe_field %>插入函数的输出。

试试这个:

<%= observe_field 'person_country_id', :url => {:action => "update_state_div"}, :with => 'person_country_id'%>

编辑:

observe_field是为了补充Prototype,Ruby on Rails 3中的javascript库not included。此问题也解决了这个问题:Observe_field in rails 3

如果您想使用它,可以通过键入

来安装this plugin
rails plugin install git://github.com/rails/prototype_legacy_helper

进入控制台。

这似乎与jQuery不兼容,所以你可能不得不删除jQuery,或编写自己的javascript来做你想做的事。

又一个编辑:

此问题解决了普通JavaScript / jQuery和HTML中的问题:jQuery Chaining Country / State Selects with OptGroup。您应该能够为Ruby on Rails修改它。

答案 1 :(得分:0)

将以下内容添加到您的Gemfile并运行bundle:

gem 'prototype_legacy_helper', '0.0.0', :git => 'git://github.com/rails/prototype_legacy_helper.git'
gem 'prototype-rails'