Rails:如何根据条件显示包含或不包含链接的块(link_to_if)

我有一个复杂的标签块(

,…),我想根据条件使用链接呈现或没有链接。

我知道link_to_if就是这样的:

  

如果条件为false仅呈现名称。

我知道link_to&block

  [complex content]  

我想要两者的结合。 如果条件为false ,则接受&block link_to_if语句,以便在没有链接的情况下呈现块。 不幸的是,带有&blocklink_to_if语句不像link_to语句:(

有没有人对我提出建议? 任何帮助都非常感谢

我为此写了自己的帮手:

  def link_to_if_with_block condition, options, html_options={}, &block if condition link_to options, html_options, &block else capture &block end end 

你可以像这样使用它:

 <%= link_to_if_with_block true, new_model_path { "test" } %> <%= link_to_if_with_block true, new_model_path do %> Something more complicated <% end %> 

我只是覆盖了内置方法导致它们提供的块使用确实对我们的使用没有多大意义。 只需将其添加到帮助器中,这将使link_to_if像link_to一样工作。

 def link_to_if(*args,&block) args.insert 1, capture(&block) if block_given? super *args end