使用rails上的ruby检查URL路径

时间:2017-04-27 07:31:40

标签: ruby-on-rails ruby rails-admin

在我的项目中,我使用的宝石是:rails admin,cancancan和devise。当我进行捆绑安装时,会添加很多视图。我添加了“can:crud,[xxxx,xxxxx]”来在我的能力模型中使用CRUD。

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

注意:新路径和编辑路径的两种形式都在同一个文件中(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>

3 个答案:

答案 0 :(得分:3)

如果你想在视图中区分编辑和新动作,那么

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

OR

  <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>

答案 1 :(得分:1)

我会在您控制器的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 %>

答案 2 :(得分:1)

您可以检查以下操作:

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