Rails 3 Tutorial Chapter 11 HTML не отображается для кнопки Follow/Unfollow

Вот мой файл show.html.erb.

<% provide(:title, @user.name) %>
<div class="row">
    <aside class="span4">
        <section>
            <h1>
                <%= gravatar_for @user %>
                <%= @user.name %>
            </h1>
        </section>
        <section>
            <%= render 'shared/stats' %>
        </section>
    </aside>
    <div class="span8">
        <%= render 'follow_form' if signed_in? %>
    <% if @user.microposts.any? %>
      <h3>Microposts (<%= @user.microposts.count %>)</h3>
      <ol class="microposts">
        <%= render @microposts %>
      </ol>
      <%= will_paginate @microposts %>
    <% end %>
  </div>
</div>

Частичный файл _follow.html.erb:

<%= form_for(current_user.relationships.build(followed_id: @user.id),
             remote: true) do |f| %>
  <div><%= f.hidden_field :followed_id %></div>
  <%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>

Частичный файл _unfollow.html.erb:

<%= form_for(current_user.relationships.find_by_followed_id(@user),
             html: { method: :delete },
             remote: true) do |f| %>
  <%= f.submit "Unfollow", class: "btn btn-large" %>
<% end %>

И мой частичный файл _follow_form.html.erb:

<% unless current_user?(@user) %>
  <div id="follow_form">
  <% if current_user.following?(@user) %>
    <%= render 'unfollow' %>
  <% else %>
    <%= render 'follow' %>
  <% end %>
  </div>
<% end %>

Изменить: я также хотел бы сказать, что я использую Bootstrap. Когда я просматриваю страницу пользователя, появляются оба класса span4 и span8, но там, где должно быть «follow_form», есть полный пробел.

Изменить: на этот вопрос был дан ответ несколько лет назад :)


person m10i    schedule 19.05.2012    source источник
comment
Вы уверены, что вошли в систему? Вы пытались удалить if signed_in? из вашего show.html.erb?   -  person alol    schedule 20.05.2012
comment
Хартл предлагает вам писать тесты перед написанием кода. Ваши тесты проходят?   -  person EricM    schedule 24.05.2012
comment
Кроме того, если вы все еще изучаете Rails Tutorial (и предполагаете, что все еще смотрите на этот вопрос), то вы, вероятно, проверяете свой код на Github, поэтому не могли бы вы дать ссылку на свой репозиторий, чтобы люди может запустить ваши тесты для себя?   -  person Paul Fioravanti    schedule 19.07.2012


Ответы (1)


я столкнулся с той же проблемой, вы можете исправить это, выполнив следующие изменения:

Шаг 1) В app/views/users/show.html.erb измените код следующим образом:

<div class = "span8">
    <%= render 'follow_form' if signed_in? %>      
        <% if @user.microposts.any? %>

к этому:

<div class = "span8">
    <%= render 'shared/follow_form' if signed_in? %>      
        <% if @user.microposts.any? %>

шаг 2) В частичном app/views/shared/_follow_form.html.erb

измените код с этого:

<% unless current_user?(@user) %>
  <div id="follow_form">
  <%if current_user.following?(@user) %>
    <%= render 'unfollow' %>
  <% else %>
    <%= render 'follow' %>
  <% end %>
  </div>
<% end %>

к этому :

<% unless current_user?(@user) %>
  <div id="follow_form">
  <%if current_user.following?(@user) %>
    <%= render 'shared/unfollow' %>
  <% else %>
    <%= render 'shared/follow' %>
  <% end %>
  </div>
<% end %>
person Midhun Krishna    schedule 11.08.2012
comment
Это не имеет смысла. Если частичные файлы находятся не в общем каталоге, а только в каталоге пользователей, это приведет к сбою приложения. У меня на самом деле такая же проблема, и я еще не понял, почему это происходит. - person Addie; 07.04.2013