Ruby on rails Rails:如何有条件地使一个字段可以用form_for标记更新?
我正在使用rails 4.1和Ruby 2.1。我有一些字段,我通常只想显示给用户(没有编辑),但如果用户作为管理员登录,我希望这些字段是可编辑的 但我无法使此代码正常工作:Ruby on rails Rails:如何有条件地使一个字段可以用form_for标记更新?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在使用rails 4.1和Ruby 2.1。我有一些字段,我通常只想显示给用户(没有编辑),但如果用户作为管理员登录,我希望这些字段是可编辑的 但我无法使此代码正常工作: <% if current_user.admin? simple_form_for product, :html => { :method => 'put', :multipart => true, class: 'form-vertical'}, :remote=>true do |f| p
<% if current_user.admin?
simple_form_for product, :html => { :method => 'put', :multipart => true, class: 'form-vertical'}, :remote=>true do |f|
print token_tag form_authenticity_token
else
product.each do |p|
end
%>
{:method=>'put',:multipart=>true,类:'form vertical'},:remote=>true do | f|
打印令牌\u标签表单\u真实性\u令牌
其他的
产品名称:各do | p|
结束
%>
随后:
<% if current_user.admin? %>
<%= f.input :name, :input_html => {:value => product.name} %>
<% else %>
<%=product.name%>
<% end %>
{:value=>product.name}%>
我得到语法错误,意外的关键字\u else,期望关键字\u end
如何在Rails中实现这一点?在PHP世界中,这是一个相对简单的过程。您的
else
需要在if条件之外:
<% if current_user.admin? %>
<% simple_form_for product, :html => { :method => 'put', :multipart => true, class: 'form- vertical'}, :remote=>true do |f| %>
<% print token_tag form_authenticity_token %>
<% end %>
<% else %>
<% product.each do |p| %>
<% end %>
{:method=>put',:multipart=>true,类:'form-vertical'},:remote=>true-do | f |%>
希望这有帮助。不,那不对。因为我甚至还没有打印出我的表单字段,而您已经关闭了simple\u form\u for语句。在文档的后面部分,我正在做类似于{:value=>product.name}%>的事情,那么如果您已经关闭了括号中的simple\u form\u,我该怎么做呢?这个错误是因为您没有
end
forsimple\u form\u for
块。我不想结束我的simple\u form\u for block,因为我还没有放置输入字段。我只想在用户是管理员时放置输入字段。看到问题了吗?我认为在雇员再培训局内不可能。您可以构建字符串并将其作为视图代码进行计算。但你为什么要这么做?你不能将内容分成两部分,一部分用于if
另一部分用于else
。我可以将视图分成两部分,但我有一堆重复的代码。也就是html的结构和我的类等等。如果我对其中一个做了更改,我就必须对另一个做更改。那不是很干。