2016-07-29 2 views
-1

약간의 도움은 다음과 같습니다.comments에 acts_as_follower를 구현하려면 어떻게해야합니까?

내 의견에 acts_as_follower gem을 구현하고 싶습니다. 댓글은 게시물에 속하며 게시물에는 많은 의견이 있습니다.

나는 사용자가 주석 followable ..

만든 그리고이 아래 레이크 경로에서 접두사 동사, URI 패턴 및 컨트롤러 # 액션은 다음과 같습니다

post_comment_follows이

을 POST

/후/: post_id를/의견/: #이

이 post_comment_follow /posts/:cjob_id/comments/:comment_id/follows/:id(.:format 삭제 만들 follows_comments) #이

파괴 follows_comments : (형식). comment_id은 /는 다음과

내 질문에 대한 예 : file : /// C :/Users/c/Desktop/RubyOnRails/ruby ​​% 20on % 20rails % 20- % 20acts_as_follower % 20for % 20multiple % 20models % 20- % 20Stack % 20Overflow.html, 게시물 ID를 필요로하는 주석 표시 페이지에서 구현하는 것 외에는 필요한 모든 단계를 완료했습니다. 여러 가지 방법을 시도했지만 표시 (: id)가 누락되었습니다. 댓글 (: id)이 없습니다. _comment.html.erb를 사용하여 게시 색인에서 어떻게 구현할 수 있습니까?

arry[0]['A']['sub'][0]['name'] # => 'C' 
arry[0]['A']['sub'][1]['name'] # => 'D' 
+0

오, 프로그래머의 농담이었습니다. – Dlaw

+0

브래킷을 놓치고 있어야합니다. –

+0

관찰 해 주셔서 감사합니다. 나는 그것을 바로 잡았다. – Dlaw

답변

0

첫째,

arry =[ 
    {"A"=>{ 
    "name"=>"B", 
    "id"=>1, 
    "sub"=>[ 
     { 
     "name"=>"C", 
     "id"=>1 
     },{ 
     "name"=>"D", 
     "id"=>2 
     } 
    } 
    ] 

그런 다음 당신은 당신이해야 할 일을 참조 코드 들여 쓰기를하는 것이 낫다에서

#for trying out in `irb` this is fine, but I would recommend refactoring to smaller methods 
[].tap do |result| 
    result << arry[0].keys 
    second_level_hash_names = arry.map {|hash| hash.values.map {|values_hash| values_hash["name"]}}.flatten 
    third_level_hash_names = arry.map {|hash| hash.values.map {|values_hash| values_hash["sub"].map {|sub_hash| sub_hash["name"]}}}.flatten 
    result << second_level_hash_names << third_level_hash_names 
end.flatten 

에게 "ABC"또는 "ABD"에 대해 묻는 질문이 있습니까? " 그러나 나는 당신이 찾고 있는지, 그리고 "C"또는 "D"가 임의인지에 대해 확신하지 못합니다. irb에서이 코드를 사용하고 사용 사례를 수정할 수 있습니다.

+0

고마워.하지만 전에 이런 걸 시도해 봤어. 내가 필요로하는 것은 "A B C"처럼 세 장을 출력하는거야. – Dlaw

0

당신이 사용하는 해시 번호가 같은 것을 발굴 할 수있는 "A B의 C"또는 "A B의 D"를 반환 할 경우

[].tap do |result| 
    result << arry[0].keys 
    result << arry[0].flatten.dig(1, "name") 
    result << arry[0].flatten.dig(1, "sub", 1, "name") 
end.flatten 

출력 :

["A", "B", "D"] 

를 그리고 환경 설정으로 변경할 수 있습니다.

+0

정의되지 않은 메서드 'dig'for ......... MethodError ... 그게 내가 얻는 것입니다. 나는 이유를 모른다. – Dlaw

+0

정의되지 않은 메서드 'dig'for ......... MethodError ... 그게 내가 얻는 것입니다. 나는 이유를 모른다. – Dlaw

+0

@Dlaw는 2.3 버전의 Ruby에서만 작동합니다. – nathanjo

관련 문제