我是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?
一旦我做到了这一点,我希望我可以用它来包装其他元素,如提交,编辑按钮等或其他领域。
如果有人知道更好的方法,请告诉我,因为我不知道我不知道的事情。
感谢您提供的任何帮助/想法。
答案 0 :(得分:2)
如果你需要在表单中使用如此深度的逻辑,你可能必须坚持使用一堆if / else语句,但我建议将表单输入到各自的erb文件中,而不是使用很多逻辑。
部分意味着重复代码,而您的代码并不完全是我所描述的可重复代码。它也不是立即可以理解的,并且将包含基本上浪费时间阅读的代码:
例如,如果我正在阅读编辑操作的视图,我会看到:
if params[:action] == "new"
它将测试与当前视图甚至不相关的操作,这与以下逻辑不同:
if current_user.admin?
这将更适合基于部分的逻辑。
希望有所帮助,享受RoR