在 rails 上使用 ruby 检查 URL 路径

Check the URL path using ruby on rails

在我的项目中,我使用过的gems 是:rails admin、cancancan 和devise.When 我进行了捆绑安装,将添加很多视图。我添加 "can :crud, [xxxx, xxxxx]" 在我的能力模型中有一个 CRUD。

问:如何查看视图中的当前路径?因为我想禁用某些字段。示例:我在新的路径方法中并且有 3 个字段(然后我单击 submit/create,现在它将添加数据)。我点击了编辑按钮,然后有一个字段将被禁用。

注意:新建路径和编辑路径两种形式在同一个文件中(activities_types/_form.html.erb).

查看

_Form.html.erb

  <% if current_page?(new_activity_type_path) %>
  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name %>
  </div>
<% else %>
  <div class="field">
    <%= f.label :"name" %>
    <%= f.text_field :name, disabled: true %>
  </div>
 <% end %>


  <div class="field">
    <%= f.label :description %>
    <%= f.text_field :description %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

我会在控制器的 newedit 方法中设置一个实例变量,然后检查表单中的值。

示例:

def new
  @whereAmI = "new"
end

def edit
  @whereAmI = "edit"
end

在视图中:

<% if @whereAmI == "edit" %>
  <%= f.text_field :name, disabled: true %>
<% elsif @whereAmI == "new" %>
  <%= f.text_field :name %>
<% end %>

如果您想区分视图中的编辑操作和新操作,那么

<% if params[:action] == "new" %>
  ...
<% elsif params[:action] == "edit" %>
  ...
<% end %>

  <div class="field">
    <%= f.label :name %>
    <% if params[:action] == "new" %>
      <%= f.text_field :name %>
    <% else %>
      <%= f.text_field :name, disabled: true %>
    <% end %>
  </div>

  <div class="field">
    <%= f.label :description %>
    <%= f.text_field :description %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>

您可以这样检查操作:

if params[:action] == "new"
 # doing something
elsif params[:action] == "edit"
 # doing something
end