2013-11-02 4 views
0

Прежде, чем кто-либо отметит это как дубликат, мне сказали из предыдущего вопроса, чтобы открыть новый вопрос с этой проблемой. К сожалению, решение для моего последнего вопроса не помогло решить эту проблему.Rails не оказывает частичного, хотя он говорит, что он имеет

Мой сервер rails говорит, что он отобразил мои частичные данные на моей странице, но содержимого там нет. Даже когда я просматриваю элементы на странице с помощью Chrome DevTools, div, который должен быть визуализирован, не существует.

EDIT: Изменены все мои партиалы к shared из layouts, я бы данный модуль не изменилось здесь.

show.html.erb (с исправлением):

<% provide(:title, @user.name) %> 
<% provide(:pagetitle, @user.name) %> 

<%= render'layouts/relation' unless current_user?(@user)%> 

<div id="stats"> 
    Player Statistics will appear here. 
</div> 

<div id="characters"> 
    Player Characters will appear here. 
</div> 

_relation.html.erb (частичное):

<div id="relation"> 
    <% if current_user.friends?(@user) %> 
     <%= render 'layouts/edit_relation', locals: { action: "rm-friend" } %> 
    <% elsif current_user.req_friends?(@user) %> 
     Friend Request Pending... 
    <% elsif current_user.pend_friends?(@user) %> 
     <%= render 'layouts/edit_relation', locals: { action: "add-friend" } %> 
     <%= render 'layouts/edit_relation', locals: { action: "rej-friend" } %> 
    <% else %> 
     <%= render 'layouts/edit_relation', locals: { action: "req-friend" } %> 
    <% end %> 
</div> 

_edit_relation.html.erb (парциальное в частичное):

<% case :action %> 
    <% when "req-friend"%> 
     <%= form_for(current_user.relation.build(character: @user.id, type: "freq"), remote: true) do |f| %> 
      <div><%= f.hidden_field :character %></div> 
      <div><%= f.hidden_field :type %></div> 
      <%= f.submit "Add Friend", class: "btn btn-large btn-primary" %> 
     <% end %> 

    <% when "add-friend"%> 
     <%= form_for(current_user.relation.build(character: @user.id, type: "friend"), remote: true) do |f| %> 
      <div><%= f.hidden_field :character %></div> 
      <div><%= f.hidden_field :type %></div> 
      <%= f.submit "Accept Request", class: "submit" %> 
     <% end %> 

    <% when "rej-friend" %> 
     <%= form_for(current_user.reverse_relation.find_by(owner: @user.id, type: "freq"), html: { method: :delete }, remote: true) do |f| %> 
      <%= f.submit "Reject Request", class: "submit" %> 
     <% end %> 

    <% when "rm-friend"%> 
     <%= form_for(current_user.reverse_relation.find_by(owner: @user.id, type: "friend"), html: { method: :delete }, remote: true) do |f| %> 
      <%= f.submit "Remove Friend", class: "submit" %> 
     <% end %> 

<% end %> 

журнал Мой сервер, говорит, что часть была оказана:

Started GET "/melv" for 127.0.0.1 at 2013-11-01 21:22:21 +0000 
Processing by UsersController#show as HTML 
    Parameters: {"name"=>"melv"} 
    User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."remember_token 
" = '35599bfa491cb6b5e10f164c0191d51cd773f173' LIMIT 1 
    User Load (1.0ms) SELECT "users".* FROM "users" WHERE "users"."name" = 'melv' 
LIMIT 1 
    Relation Load (1.0ms) SELECT "relations".* FROM "relations" WHERE "relations" 
."owner" = $1 AND "relations"."character" = 1 AND "relations"."type" = 'friend' 
LIMIT 1 [["owner", 2]] 
    Relation Load (0.0ms) SELECT "relations".* FROM "relations" WHERE "relations" 
."owner" = $1 AND "relations"."character" = 1 AND "relations"."type" = 'freq' LI 
MIT 1 [["owner", 2]] 
    Relation Load (1.0ms) SELECT "relations".* FROM "relations" WHERE "relations" 
."owner" = $1 AND "relations"."character" = 2 AND "relations"."type" = 'freq' LI 
MIT 1 [["owner", 1]] 
    Rendered layouts/_edit_relation.html.erb (0.0ms) 
    Rendered layouts/_relation.html.erb (14.0ms) 
    Rendered users/show.html.erb within layouts/application (23.0ms) 
    Rendered layouts/_shim.html.erb (0.0ms) 
    Rendered layouts/_header.html.erb (1.0ms) 
    Relation Load (1.0ms) SELECT "relations".* FROM "relations" WHERE "relations" 
."owner" = 1 LIMIT 1 
    Rendered layouts/_aside.html.erb (4.0ms) 
    Rendered layouts/_flash.html.erb (0.0ms) 
Completed 200 OK in 299ms (Views: 290.0ms | ActiveRecord: 5.0ms) 

Любые идеи?

+0

Какое из двух паркашений не рендеринга? – MarkoHiel

+0

Учитывая, что рендеринг частица edit_relation принимал только 0,0 мс, я не подозреваю ни одного из значений, сопоставленных для оператора case. Не могли бы вы проверить значение действия в этом частичном? – Chandranshu

+0

делать частичные 'макеты/в сторону' и' layouts/flash' рендеринг? – amine

ответ

1

Я не знаю, поможет ли это. Но обычно вы не помещаете частичные файлы в папку макетов. Попробуйте создать новую папку и отнести ее оттуда.

+1

Спасибо за подсказку, я изменил это (+1) –

3

Эта линия имеет проблемы

<% case :action %> 

action должен быть локальной переменной, а не символ. Символ :action не соответствует ни одному из значений в when, поэтому Rails прошли через это частичное мгновение и ничего не сделали.

Чтобы исправить, изменить его

<% case action %> 

Кроме, есть еще две вещи, которые нужно улучшить

  1. Это не хорошо, чтобы положить парциальное под layouts, если он не является частью макета , MarkoHiel также упомянул об этом.

  2. Слишком много логики в представлении делает код вида очень уродливым.

+0

Это не сработало. Это вызывает функцию NameError в # show show: 'undefined local variable or method 'action' для # <# : 0x31c1448>' –

+0

1. Попробуйте переименовать 'действие' другим, это также метод Rails, вероятно, называют столкновение. 2. Попробуйте прокомментировать все коды этого париона и загрузить его без локальных переменных. Отлаживайте шаг за шагом, и вы узнаете, где проблема. –

+0

Я переименовал 'action' в' doaction', и он выбросил ту же ошибку. Я вытащил всю логику и обработал ветку 'Accept Request', и она получилась просто отлично. Я правильно использую «locals», или есть лучший способ сделать это? –

2

Возможно, это сказало визуализированное, потому что код выполнен, просто не выводится. Вам нужно поместить символ '=' после тега '<%', чтобы он правильно выводил.

<%= render'layouts/relation' unless current_user?(@user) %>

+0

Это огромная ошибка с моей стороны, извините. Предыдущий вопрос уже решил эту проблему для меня, но я забыл отразить изменение в вопросе, когда копирую и вставляю его здесь. Человек, который решил эту проблему, сказал мне задать новый вопрос. –

Смежные вопросы