Ruby on rails 如何仅在两个部分中的一部分上显示链接?
好的,我有一个rails表单部分,它可以被两个视图访问,即new和edit操作,但是我只需要在edit表单上显示一个链接,我正在尝试这种方法 新形式Ruby on rails 如何仅在两个部分中的一部分上显示链接?,ruby-on-rails,ruby,ruby-on-rails-3,haml,Ruby On Rails,Ruby,Ruby On Rails 3,Haml,好的,我有一个rails表单部分,它可以被两个视图访问,即new和edit操作,但是我只需要在edit表单上显示一个链接,我正在尝试这种方法 新形式 = render :partial => 'form', :locals => {:f => f} 编辑表格 = render :partial => 'form', :locals => {:f => f, :show_link => true} 形成局部 if defined? show_link
= render :partial => 'form', :locals => {:f => f}
编辑表格
= render :partial => 'form', :locals => {:f => f, :show_link => true}
形成局部
if defined? show_link
是否有更好的方法来实现这一点,或者有更好的方法的标准rails方法如果是链接而不是表单元素,通常最好使用嵌套渲染。换句话说,您有3个文件:
new.html
、edit.html
和\u form.html
。new.html
和edit.html
呈现\u form.html
,以及edit.html
都包含额外的链接。如果需要,可以将链接元素的样式设置为显示在其他位置
<> P>如果链接流更优雅地进入表单,请考虑使用<代码>内容> <代码> >代码>屈服<代码>,以便<代码>编辑.html >包括:
content_for :extras do
# link here
end
而\u form.html
则包括yield:extras
注意:我故意省略了模板扩展,不知道您是否在使用erb、haml和other。如果它是链接而不是表单元素,通常最好使用嵌套呈现。换句话说,您有3个文件:
new.html
、edit.html
和\u form.html
。new.html
和edit.html
呈现\u form.html
,以及edit.html
都包含额外的链接。如果需要,可以将链接元素的样式设置为显示在其他位置
<> P>如果链接流更优雅地进入表单,请考虑使用<代码>内容> <代码> >代码>屈服<代码>,以便<代码>编辑.html >包括:
content_for :extras do
# link here
end
而\u form.html
则包括yield:extras
注意:我故意不使用模板扩展,不知道您是否在使用erb、haml或其他。我以前看到的方法是使用
new\u record
和persistend
,它们是相反的<代码>持久化用于保存的记录,新记录
用于未保存的记录
我将在这里猜测这个场景,但它是否类似于“在编辑页面上显示删除链接”
如果是这样,我会这样做(假设@object是表单的对象):
(新建和编辑表格)
(表格部分)
(示例在haml中,但如果需要,应该很容易转换为erb)我以前看到的方法是使用
new\u record
和persistend
,它们是彼此相反的<代码>持久化用于保存的记录,新记录
用于未保存的记录
我将在这里猜测这个场景,但它是否类似于“在编辑页面上显示删除链接”
如果是这样,我会这样做(假设@object是表单的对象):
(新建和编辑表格)
(表格部分)
(示例在haml中,但如有必要,应易于转换为erb)您甚至不需要从编辑中传递
参数show\u link
,您可以在表单视图中检测动作本身
在这两个地方你都可以使用
<%= render :partial => 'form', :locals => {:f => f} %>
若链接是html标记,你们可以这样做
<%= (link_to ........ ) if params[:action] == "edit" %>
<% if params[:action] == "edit" %>
<a href="...">click me to edit</a>
<% end %>
因此,现在它将检查渲染
是否发生在编辑
操作中,将添加链接
。您甚至不需要从编辑中传递参数show\u link
,您可以在表单视图中检测操作本身
在这两个地方你都可以使用
<%= render :partial => 'form', :locals => {:f => f} %>
若链接是html标记,你们可以这样做
<%= (link_to ........ ) if params[:action] == "edit" %>
<% if params[:action] == "edit" %>
<a href="...">click me to edit</a>
<% end %>
因此,现在它将检查渲染
是否发生在编辑
操作中,将添加链接
if @record.new_record?
# render 'new' partial
else
# render 'edit' partial
end
要区分rails表单中的新建
和编辑
特定内容我通常会执行以下操作
if @record.new_record?
# render 'new' partial
else
# render 'edit' partial
end
在my rails表单中区分新建
和编辑
特定内容