Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby on Rails应用程序中禁用输入字段的所有表单_?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何在Ruby on Rails应用程序中禁用输入字段的所有表单_?

Ruby on rails 如何在Ruby on Rails应用程序中禁用输入字段的所有表单_?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我试图让Rails应用程序干涸一点,所以我想在我的show视图中呈现一个表单,但禁用所有输入字段 // show.html.erb <%= form_for(@project) do |f| %> <%= render 'fields', :f => f %> <% end %> //show.html.erb f%> 最好的方法是什么 谢谢您的帮助。您可以使用样式表来实现此功能 show操作可能在controller中,比如说“Project

我试图让Rails应用程序干涸一点,所以我想在我的
show
视图中呈现一个表单,但禁用所有输入字段

// show.html.erb

<%= form_for(@project) do |f| %>
  <%= render 'fields', :f => f %>
<% end %>
//show.html.erb
f%>
最好的方法是什么


谢谢您的帮助。

您可以使用样式表来实现此功能

show操作可能在controller中,比如说“Project”,因此您可能在样式表中有一个带有控制器名称的文件

现在将表单放在show.html.erb中的一个div中,并给它一个唯一的id,比如“disable_input”,您不会给任何页面中的任何元素这个id

现在禁用css中此div下的所有输入字段。您可以这样编写

禁用输入{
#无论你想做什么
}

因此无需编码。

Javascript 一种方法是使用JS。在“显示”视图中包含具有特定类的
div

// show.html.erb

<div class='disable_input'>
  <%= form_for(@project) do |f| %>
    <%= render 'fields', :f => f %>
  <% end %>
</div>
轨道 如果您想在服务器端实际生成它,您可以将一个变量传递给partial,该变量将告诉partial是否必须在每个字段上添加disabled选项。不过,这需要更多的工作

使用变量,可以执行以下操作:

<%= form_for(@project) do |f| %>
  <%= render 'fields', :f => f, :disabled => true %>
<% end %>

f、 :disabled=>true%>
部分:

<% disabled ||= false  
   #We do this so if disabled is not passed to the partial it doesn't crash. 
   # We default it to false 
%>

<% # Then for all your fields, add disabled: disabled %>
<%= f.text_field :some_attribute, disabled: disabled %>

您可以将所有字段包装在

//show.html.erb
f%>

他想在每个输入中添加
disabled
属性。就我所知,你不能使用CSSYes来实现这一点,我刚刚做了一些研究,没有办法禁用仅使用CSS的HTML输入字段。不过,那也太好了!您不能仅通过使用CSS禁用一个或多个输入,因为它不仅仅涉及使它们“看起来”被禁用。好的,谢谢。使用jQuery很容易,但如果有人关闭了Javascript怎么办。事实上,我希望有一个更可靠的方法来做到这一点…编辑了我的答案。想不出更干净的方法。如果有办法避免将
disabled
传递给每个表单元素,那就太好了。事实上,我最终按照您的建议创建了一个表单生成器。谢谢你让我走上正轨!结果如何?你能在你的帖子中分享这个解决方案来帮助未来的读者吗?谢天谢地,我只是跟着瑞安·贝特的,这真是太棒了!漂亮、干净的把戏:-)
<% disabled ||= false  
   #We do this so if disabled is not passed to the partial it doesn't crash. 
   # We default it to false 
%>

<% # Then for all your fields, add disabled: disabled %>
<%= f.text_field :some_attribute, disabled: disabled %>
// show.html.erb

<%= form_for(@project) do |f| %>
  <fieldset disabled>
    <%= render 'fields', :f => f %>
  </fieldset>
<% end %>