【问题标题】:Yielding in Rails partials在 Rails 部分中屈服
【发布时间】:2016-10-12 16:35:35
【问题描述】:

我使用的是 Rails 4.2,但遵循 Rails 5.0 的部分文档,尝试构建搜索部分。 http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

我正在获取“搜索”按钮,因此共享部分正在呈现,但是,它似乎并没有返回到调用块。我没有得到标签或 search_field。我做了什么愚蠢的事情,或者这在 Rails 4.2 中不起作用吗?看起来这应该只是基本的 Ruby。

我确实注意到此示例未包含在 4.2 的文档中。 http://guides.rubyonrails.org/v4.2/layouts_and_rendering.html#using-partials

共享/_search_filters.html.erb

<div class="search">
  <%= search_form_for @q, html: { class: 'form-inline'} do |f| %>
    <div class="form-group">
      <%= yield f %>
    </div>
    <%= f.submit 'Search', class: 'btn btn-default', role: 'button' %>
  <% end %>
</div> <!-- /.search -->

index.html.erb

<%= render 'shared/search_filters', search: @q do |f| %>
  <%= f.label :search, 'Search (optional)', class: 'control-label'  %>
  <%= f.search_field :name_or_description_cont,
                     class: 'form-control',
                     placeholder: 'Search (optional)' %>
<% end %>

【问题讨论】:

  • 您的渲染正在工作 - 您看到了按钮。 Rails 4.2 和 5.0 指南都使用 。我认为这个部分的问题是“ ” 你在用ransack吗?这就是你不使用 form_for 而是使用 search_form_for 的原因吗?
  • 是的,我们正在使用 ransack。我在表单组中添加的任何内容都会呈现在页面上,但产量不起作用

标签: ruby-on-rails ruby ruby-on-rails-5 ruby-on-rails-4.2 partials


【解决方案1】:

如果您使用的是 5.0 或更高版本,Rails 似乎只支持在部分中让步。来自release notes for 5.0

在使用 render partial: 帮助器进行渲染时允许块。

【讨论】:

    【解决方案2】:

    尝试在您的索引处替换它:

     render layout: 'shared/search_filters', locals: { search: @q } do |f|
    

    【讨论】:

    • 谢谢佩德罗。不幸的是,几个月前我离开了那个项目,所以我看不出我对这个问题的解决方案实际上是什么。 :) 但也许这会对其他人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2015-06-01
    • 2014-03-12
    • 2019-09-09
    • 2017-06-07
    • 1970-01-01
    • 2014-05-26
    相关资源
    最近更新 更多