2013-11-02 6 views
0

누구든지 이것을 복제본으로 표시하기 전에, 이전 질문에서이 문제로 새로운 질문을하기로했다. 불행히도 내 마지막 질문에 대한 해결책은이 문제에 대해 작동하지 않았다.레일스는 부분적으로 렌더링하지 않는다고한다.

내 레일 서버는 내 페이지를 내 페이지에 렌더링했다고 말하지만 내용은 없습니다. Chrome DevTools를 사용하여 페이지의 요소를 검사해도 렌더링 될 div가 없습니다.

편집

:layouts에서 shared 내 모든 파셜을 변경, anthough 내가 여기에 변경되지 않았습니다. (수정)와

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.0ms 밖에 걸리지 않았 음을 감안할 때 case 문과 일치하는 값이없는 것으로 의심됩니다. 이 부분 내에서 행동의 가치를 확인해 주시겠습니까? – Chandranshu

+0

'layouts/aside' 부분과'layouts/flash' 부분을 잘 렌더링합니까? – amine

답변

1

도움이되는지 잘 모르겠습니다. 하지만 일반적으로 레이아웃 폴더에 부분을 넣지는 않습니다. 새 폴더를 만들고 거기에서 렌더링 해보십시오.

+1

팁 주셔서 감사합니다. (+1) –

3

이 줄은 문제

<% case :action %> 

action이있는 지역 변수가 아닌 기호 있어야한다. :action 기호는 when의 값과 일치하지 않으므로 레일스는이 부분을 즉시 통과하여 아무것도하지 않았습니다. 해결하려면

는 두 개 더 일이 레이아웃의 일부가 아닌 경우 그것은 layouts 아래 부분 넣어 좋지 않다

  1. 을 개선 할 필요가있다, 옆에

    <% case action %> 
    

    로 변경 . MarkoHiel도 언급했습니다.

  2. 너무 많은 논리로 인해보기 코드가 매우 추해 보입니다.

+0

변경되었습니다. # <# <클래스 : 0x74a76c8> : 0x31c1448> ' –

+0

에 대해 사용자 정의 # :'정의되지 않은 지역 변수 또는 메소드'action '에 NameError가 throw됩니다. 1. 다른 사람에게'action' 이름 바꾸기를 시도하십시오. 아마 이름 충돌. 2. 해당 parial의 모든 코드를 주석 처리하고 로컬 변수없이로드하십시오. 단계별로 디버그하면 문제가있는 위치를 알 수 있습니다. –

+0

'action'을'doaction'으로 이름을 바꾸 었는데 같은 오류가 발생했습니다. 나는 모든 로직을 꺼내어 Accept Accept 브랜치를 렌더링했다. 나는 '지역 주민들'을 올바르게 사용하고 있습니까? 아니면 그것을하는 더 좋은 방법이 있습니까? –

2

코드가 실행 되었기 때문에 아마 출력되지 않았을 것입니다. '< %'태그 다음에 '='문자를 넣어서 제대로 출력 할 수 있도록해야합니다.

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

+0

그건 내 부분에 큰 실수 야, 미안. 이전 질문은 이미 저를 위해 그 문제를 해결했지만, 여기에 복사하여 붙여 넣을 때 변경 사항을 반영하는 것을 게을리했습니다. 그 문제를 해결 한 사람이 새로운 질문을 올리라고했습니다. –

관련 문제