【发布时间】:2017-07-11 18:50:00
【问题描述】:
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,但我确实觉得共享的内容如此之多时会更容易(意识到共享程度取决于项目,在我的情况下,这是非常高的共享程度)
【问题讨论】:
标签: ruby-on-rails ruby dry