2016-06-17 8 views
0

私は、検索で取得された権限を表示するページをレンダリングする必要がある、検索機能を備えています。しかし、検索すると、テンプレートは一度だけではなく複数回レンダリングされ、その上にレンダリングされるため、混乱したように見えます。私はエラーがどこにあるのかは分かりませんが、レンダリングを複数回呼び出す必要があります。 HERESに私のコントローラメソッド:Rails検索機能のレンダリングページ複数のタイムアウト

def index 
if params[:search] 
    @grants = Grant.search(params[:search]).order("created_at DESC") 
else 
    @grants = Grant.all.order('created_at DESC') 
end 

end 

そして、私はテンプレート

<% if @grants.present? %> 
<%= render @grants %> 
<% else %> 
<p>There are no grants containing the term(s) <%= params[:search] %>.</p> 
<% end %> 
<%= yield %> 

とテンプレートをレンダリング私の見解の一部。

<html> 
<body> 
<style>div { 
     margin-left:17%; 
     padding:1px 16px; 
     height:1000px;} 
</style> 
    <div> 
    <center> 
     <hr style="height:5 px; visibility:hidden;" /> 
     <br> 
     <font size=6 > 
     <strong> 
      <A HREF="/" STYLE="text-decoration: none; color: black">US Federal  Grants</a> 
      <br> 
      <br> 
      <hr style="height:5 px; visibility:hidden;" /> 
     </strong> 
     </font> 
    </center> 

<% if @grants != [] && @grants != nil%> 
    <table border="1" style="width:100%"> 
    <tr> 
    <td><strong><font size=5>Title</font></strong></td> 
    <td><strong><font size=5>Award Ceiling</font></strong></td> 
    <td><strong><font size=5>Description</font></strong></td> 
    <td><strong><font size=5>Additional Information</font></strong></td> 
    <td><strong><font size=5>Closing Date</font></strong></td> 
</tr> 

<% for item in @grants %> 
    <tr> 
    <td><%= item.title %></td> 

    <% if item.ceiling != '$0' && item.ceiling != nil && item.ceiling != '' && item.ceiling != '$1' && item.ceiling != '$2'%> 
     <td><%= item.ceiling %></td> 
     <% else %> 
     <td> See link for more information </td> 
    <% end %> 


    <% if item.description == "" %> 
     <td>See link for more information</td> 

    <%elsif item.description == nil%> 
     <td>See link for more information</td> 

    <% elsif item.description.sub('Description:', '').length > 720 %> 
    <td> 
    <%= truncate(item.description.sub('Description:', ''), length: 720) %> 
    <%= link_to 'Read more', '', class: "read-more-#{item.id}" %> 
    <script> 
     $('.read-more-<%= item.id %>').on('click', function(e) { 
     e.preventDefault() 
     $(this).parent().html('<%= escape_javascript item.description.sub('Description:', '') %>') 
     }) 
    </script> 
    </td> 
    <%else%> 
    <td> <%=item.description.sub('Description:', '')%></td> 
    <%end%> 


    <td><center> <a href= <%= item.link %>>LINK</a><center></td> 
     <%unless item.date == nil%> 
    <td><% newdate = Date.parse item.date %> 
      <%= newdate.strftime("%D") %> 
     </td> 
     <%end%> 
</tr> 
<% end %> 
    <% else %> 
<center> 
    <p> There are no Grants available to Entrepreneurs in this category at  this time. However this list updates daily based on Grants.gov data, so feel  free to check back later. </p> 
    </center> 
    <% end %> 


    </table> 

</div> 
</body> 
</html> 

は、私はその出来事がどこかわからないが、それはそれを約25倍

答えて

1

あなたが偶然出会ったRailsのコレクションのレンダリングをレンダリングしているようです。あなたはここでそれについての詳細を読むことができます:https://robots.thoughtbot.com/rendering-collections-in-rails

あなたは

<%= render @grants %> 

Railsは、これはあなたがgrants/_grant.html.erb(私は考える - またはいくつかの同様の経路)にレンダリングしたいと解釈し実行すると、各助成金のために一度部分を。

あなたの代わりに一度だけ、それをレンダリングしたい場合は、(それはdoesnのちょうどので、また良い考えかもしれません「_grants.html.erb」とレンダリングのようなものに部分的に名前を変更

<%= render "grants/grant" %> 

を試してみてください単一の助成金を提示しようとしているように見える)