Javascript 使用link\u to\u remote在rails 3应用程序中显示隐藏字段的简单链接

Javascript 使用link\u to\u remote在rails 3应用程序中显示隐藏字段的简单链接,javascript,ruby-on-rails-3,Javascript,Ruby On Rails 3,我有一个可以工作的表单,但是我需要隐藏一些字段,除非用户单击链接。一旦暴露出来,一切都很好。以下是表格的部分责任人: <%= fields_for :city do |builder| %> <p class="fields> <%= builder.label :name, "City" %> <%= builder.hidden_field :name %><br /> <%= builder.lab

我有一个可以工作的表单,但是我需要隐藏一些字段,除非用户单击链接。一旦暴露出来,一切都很好。以下是表格的部分责任人:

 <%= fields_for :city do |builder| %>
<p class="fields>
    <%= builder.label :name, "City" %>
    <%= builder.hidden_field :name %><br />
    <%= builder.label :state, "State" %>
    <%= builder.text_field :state %>
    <%= link_to_function "new city", "show_fields('city_name')" %>
</p>
<% end %>
当我尝试在chrome中运行并检查它时,我看到以下错误:

application.js4:uncaughttypeerror:Object#没有“previous”方法

现在,我承认我对js是完全陌生的,对ruby和rails也是相当陌生的,但我非常确定我正在做的正是Ryan Bates在其中一本书中所做的。(我也尝试过show_fields(此)格式,结果相同)


用一个链接将隐藏的_字段暴露出来的正确方法是什么?这看起来很简单,但我不明白为什么前面的方法不起作用。如果这是显而易见的,很抱歉,但我真的找不到正确的开始位置。

据我所知,show方法(或JS中的任何调用)不适用于由hidden_field helper创建的字段。我的想法是添加一个函数来隐藏现有的文本字段,然后在其上使用show方法,效果很好

然后,我的解决方案是切换到jQuery并使用:

$(document).ready(function() {
 // hides the div as soon as the DOM is ready
  $('div.newcity').hide();
});
在向用户显示页面之前隐藏div。然后,我可以使用以下方法轻松显示div:

function toggle_fields(link) {  
    $(link).toggle();
    $(link).prev().toggle();
}
在application.js和:

<%= link_to_function "new city", "toggle_fields('div.newcity')" %>


在视图中。如果后来有人偶然发现,我必须使用jquery rails gem来实现所有这些功能。

据我所知,show方法(或JS中的任何调用)对于hidden_field helper创建的字段不可用。我的想法是添加一个函数来隐藏现有的文本字段,然后在其上使用show方法,效果很好

然后,我的解决方案是切换到jQuery并使用:

$(document).ready(function() {
 // hides the div as soon as the DOM is ready
  $('div.newcity').hide();
});
在向用户显示页面之前隐藏div。然后,我可以使用以下方法轻松显示div:

function toggle_fields(link) {  
    $(link).toggle();
    $(link).prev().toggle();
}
在application.js和:

<%= link_to_function "new city", "toggle_fields('div.newcity')" %>


在视图中。如果后来有人偶然发现了这一点,我必须使用jquery rails gem来实现所有功能。

sidenote,我只是尝试编写一些东西来隐藏现有的文本字段,这似乎很好。接下来的问题是,有没有一种方法可以让javascript在页面加载之前隐藏两个文本字段?旁注,我只是尝试编写一些东西来隐藏一个现有的文本字段,这似乎很好。作为后续问题,有没有一种方法可以让javascript在页面加载之前隐藏两个文本字段?