这是我的部分形式:
<%= f.simple_fields_for :photo_attributes, :html => { :multipart => true } do |d| %>
<%= d.label :image, :label => 'Upload logo', :required => false %>
<%= d.file_field :image, :label => 'Image, :required => false', :style => 'margin-bottom:2px' %>
<%= d.input :image_url, :label => 'Billed URL', :required => false %>
<% end %>
如果操作是编辑,我想改为显示:
<%= f.simple_fields_for :photo, :html => { :multipart => true } do |d| %>
<%= d.label :image, :label => 'Upload logo', :required => false %>
<%= d.file_field :image, :label => 'Image, :required => false', :style => 'margin-bottom:2px' %>
<%= d.input :image_url, :label => 'Billed URL', :required => false %>
<% end %>
我怎样才能做到这一点?
答案 0 :(得分:98)
current_page?(action: 'edit')
请参阅ActionView::Helpers::UrlHelper#current_page?
Rails还可以在视图中使用方法controller_path
,controller_name
,action_name
。
答案 1 :(得分:28)
通常,表单部分仅包含字段,而不包含表单标记或字段,但如果您没有其他方式,则可以始终查看当前设置的params[:action]
并执行相应的操作。
答案 2 :(得分:8)
你可以写点像
<%- form_url = @object.new_record? ? :photo_attributes : :photo %>
<% f.simple_fields_for form_url, :html => { :multipart => true } do |d| %>
也就是说,如果您要检查@object
。否则,您可以使用action_name
(甚至是controller_name
)。
类似于:
<%- form_url = action_name == :edit ? :photo : :photo_attributes %>
<% f.simple_fields_for form_url, :html => { :multipart => true } do |d| %>
希望这有帮助。
答案 3 :(得分:5)
Rails 5:在视图中显示动作
<%= action_name %>
视图中的if语句
<% if action_name == "edit" %>
This is an edit action.
<% end %>
答案 4 :(得分:0)
在视图中使用@ _controller.action_name