在我的项目中,我使用的宝石是: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>
答案 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)
我会在您控制器的new
和edit
方法中设置一个实例变量,然后检查表单中的值。
示例:
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