new
和edit
以及(create
和update
)之间通常有很多相似之处。我发现,从历史上看,导致我创建的是一个标题为new_or_edit
的单一视图,其中我使用各种权限标识符来更改所显示的信息。对于一个简单的人为例子......
def new
@permission = "new"
render 'new_or_edit'
end
def edit
@permission = "edit"
render 'new_or_edit'
end
# new_or_edit.html.erb
<% form_for ... %>
<% if @permission == "new" %>
<input id="name" />
<% else %>
<input id="email" />
<% end %>
<input id="story" />
<% end %>
从大会的角度来看,更多的是“Railsy”?我上面做的方式。或者有一个单独的new.html.erb
和edit.html.erb
并拉入部分内容,因此重写将在下面:
def new
@permission = "new"
end
def edit
@permission = "edit"
end
# new.html.erb
<% form_for ... %>
<%= render @permission %>
<%= render "generic" %>
<% end %>
# edit.html.erb
<% form_for ... %>
<%= render @permission %>
<%= render "generic" %>
<% end %>
# _new.html.erb
<input id="name" />
# _edit.html.erb
<input id="email" />
# _generic.html.erb
<input id="story" />
就个人而言,我总是觉得我的方式,如果设计为可读,那就更好了,因为......
文件较少(我个人不喜欢使用Rails开发)
很高兴不重复类(例如,在form_for
上)并且不可避免地,文本,如文件之间的介绍文本
那就是说,我现在正在问,因为我正在进行重构,并且宁愿没有其他Rails开发人员看这个/帮助我变得立即对我所写的过敏。 FWIW,按照我的风格,我也将类似地结合创建/更新方法。我意识到这会破坏CRUD,但我确实觉得它更容易分享(分享的程度取决于项目,在我的情况下,它是非常高度的共享)
答案 0 :(得分:1)
而不是new_or_edit
,为什么不选择一个并让另一个代表呢?这不那么冗长。在实践中,您通常会以不同的方式拆分,new
和edit
只是在同一个表单周围装饰。
例如new
:
<% form_for ... do |form| %>
<%= render partial: 'form', object: form %>
<%= submit_tag 'Create' %>
<% end %>
在您调整标签的地方,任何&#34;取消&#34;链接转到,并在个案的基础上,大部分表单内容在_form
部分。
拥有如此多的文件似乎是一件很麻烦的事情,但是合理数量的小型,简单,大部分是单用途的文件通常比一些复杂的文件更容易跟踪,因为它们非常复杂多用途。