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在页面加载之前隐藏两个文本字段?