我正在尝试避免同一资源的管理表单和常规用户表单之间的代码重复。
我希望能够通过以下方式使用一种形式:
<% if current_user.admin? %>
<%= form_for([:admin,@post], :html => {class: "form"}) do |f| %>
<% else %>
<%= form_for @post, html: { class: 'form' } do |f| %>
<% end %>
然后包含只有管理员应该通过表单正文中的语句看到的字段。
这种方法不起作用,我认为因为&lt;%end%&gt;正在结束表格。
有办法做到这一点吗?这种方法是否有意义?
谢谢!
答案 0 :(得分:5)
尝试将代码移动到帮助程序可能有所帮助:
#YourHelper.rb
def form_for_admin(condition, &block)
if condition
form_for [:admin, @post], :html => {class: "form"}, &block
else
form_for @post, html: { class: 'form' }, &block
end
end
并使用:
<%= form_for_admin current_user.admin? do |f| %>