如果是编辑表单,如何将自动聚焦添加到表单字段?

时间:2014-02-04 03:01:14

标签: ruby-on-rails

我是ruby on rails的新手,通过Rails教程书以及实用工作室的Rails编程。然而,对于我的项目,我现在需要找到解决方案,因此我不能花更多的时间在研究上。

我的问题是,一旦我能够添加,显示和编辑表单,我就会被指示创建部分内容,即_forms.html.erb,然后在编辑,显示和新页面上呈现这些表单。

在我的_forms.html.erb partial上,我如何使用基于表单呈现的页面的if语句实现一些流程。

例如,当为show页面呈现_form.html.erb时,我希望将某些form_for标签/字段设置为readonly:true。在表单的底部,我想要提交,编辑,更改基于页面的按钮。

到目前为止,我正在尝试使用parems [:action] ==“new”或“edit”等来实现控制流程,如下所示:

edit.html.erb文件下的旧代码:

      <%= f.label :patform_type %>
      <%= f.text_field :patform_type,autofocus: true %>

_form.html.erb文件下的新代码:

      <%= f.label :patform_type %>
      <%= f.text_field :patform_type %>
        <% if params[:action] == "new" %>
          <%= ,autofocus: true %>
        <% end %>

我的原始代码受到以下帖子的影响: Rails not editable text field How to disable all form_for input fields in Ruby on Rails app?

一旦我做到了这一点,我希望我可以用它来包装其他元素,如提交,编辑按钮等或其他领域。

如果有人知道更好的方法,请告诉我,因为我不知道我不知道的事情。

感谢您提供的任何帮助/想法。

1 个答案:

答案 0 :(得分:2)

如果你需要在表单中使用如此深度的逻辑,你可能必须坚持使用一堆if / else语句,但我建议将表单输入到各自的erb文件中,而不是使用很多逻辑。

部分意味着重复代码,而您的代码并不完全是我所描述的可重复代码。它也不是立即可以理解的,并且将包含基本上浪费时间阅读的代码:

例如,如果我正在阅读编辑操作的视图,我会看到:

if params[:action] == "new"

它将测试与当前视图甚至不相关的操作,这与以下逻辑不同:

if current_user.admin?

这将更适合基于部分的逻辑。

希望有所帮助,享受RoR