Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如何有条件地使一个字段可以用form_for标记更新?_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails:如何有条件地使一个字段可以用form_for标记更新?

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

我正在使用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|
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
for
simple\u form\u for
块。我不想结束我的simple\u form\u for block,因为我还没有放置输入字段。我只想在用户是管理员时放置输入字段。看到问题了吗?我认为在雇员再培训局内不可能。您可以构建字符串并将其作为视图代码进行计算。但你为什么要这么做?你不能将内容分成两部分,一部分用于
if
另一部分用于
else
。我可以将视图分成两部分,但我有一堆重复的代码。也就是html的结构和我的类等等。如果我对其中一个做了更改,我就必须对另一个做更改。那不是很干。