Ruby on rails 如何仅在两个部分中的一部分上显示链接?

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

好的,我有一个rails表单部分,它可以被两个视图访问,即new和edit操作,但是我只需要在edit表单上显示一个链接,我正在尝试这种方法

新形式

 = 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表单中区分
新建
编辑
特定内容