【发布时间】:2016-01-19 17:41:09
【问题描述】:
我已经使用“like twitter”应用程序遵循了 RoR hartl 教程,我想对其进行一些修改,实现搜索栏以搜索具有给定名称的用户,并将关注/取消关注选项“更改”为背书系统,一个用户可以背书另一个用户,一个月可以背书3次,但不能每个月背书两次。
现在遇到一些问题。访问用户个人资料页面时,会出现背书表单,您可以为他背书并删除背书。 但是当我使用主页上的搜索栏时,我得到:
缺少部分搜索/_endorse_form、application/_endorse_form with
我有部分:
shared/_endorse_form.html.erb
<% unless current_user?(@user) %>
<div id="endorse_form">
<% if current_user.endorsing?(@user) %>
<%= render 'shared/unendorse' %>
<% else %>
<%= render 'shared/endorse' %>
<% end %>
</div>
<% end %>
shared/_endorse.html.erb
<%= form_for(current_user.active_endorsements.build) do |f| %>
<div><%= hidden_field_tag :endorsed_id, @user.id %></div>
<%= f.submit "Endorse", class: "btn btn-primary" %>
<%= f.text_field :comment, class: 'form-control' %>
<% end %>
shared/_unendorse.html.erb
<%= form_for(current_user.active_endorsements.find_by(endorsed_id: @user.id),
html: { method: :delete }) do |f| %>
<%= f.submit "Remove endorse", class: "btn" %>
<% end %>
现在关于搜索控制器:
class SearchController < ApplicationController
def search
query = "%#{params[:query]}%"
@users = User.where("name LIKE ? ", query)
end
end
和观点:
<%= render 'shared/search_bar' %>
<ul class="users follow">
<%= render @users %>
</ul>
<%= will_paginate %>
就是这样,我想要共享文件夹中的部分内容,这样我就可以在“所有用户”之类的页面上或在搜索用户时呈现它们,这样它就可以出现在搜索结果等旁边。希望你明白这一点.
现在,当我将共享部分移动到假设用户视图文件夹并从渲染中删除 'shared/' 时,搜索工作,但我不能获取 部分显示在搜索结果旁边并出现错误:
nil:NilClass 的未定义方法 `id'
Extracted source (around line #2):
<%= form_for(current_user.active_endorsements.build) do |f| %>
<div><%= hidden_field_tag :endorsed_id, @user.id %></div>
<!-- not sure about the current_user.id!!!!!!!!!!1 -->
<%= f.submit "Endorse", class: "btn btn-primary" %>
<%= f.text_field :comment, class: 'form-control' %>
<% end %>
我当然觉得我错过了一些重要的东西。。有人知道如何正确解决这个问题吗?
最好的问候, 赫尔班
【问题讨论】:
-
渲染局部的
main页面代码是什么? -
@ahmadhamza 主页?您的意思是向用户展示的页面,即 users/show.html.erb ?
-
你在问题里说
But when I use the search bar from the main page, i get: -
@ahmadhamza 它位于 static_pages/home 中,它还为登录或未登录的用户呈现部分内容,它们位于同一个 static_pages 目录中。
<%= render 'static_pages/logged_in_home' %>部分呈现搜索栏,如:<%= render 'shared/search_bar' %>还有一些 html,如<section class="user_info"> <%= render 'shared/user_info' %> </section> -
我在问您为在主页中呈现这些部分而编写的代码是什么?我需要检查代码。可能是你没有写正确的路径?
标签: ruby-on-rails ruby partials