마지막 질문에 KandadaBoggu의 도움을 많이 받았으며 매우 감사하고 있습니다. 우리가 코멘트에 묻히는 동안 나는이 부분을 깨고 싶었다.link_to 매개 변수 전달 및 문제 태그 기능 표시 - Ruby on Rails
내가 개발중인 레일 블로그에 태그 기능을 만들려고합니다. 관계는 게시물 has_many : 태그와 태그 belongs_to : post입니다. 게시물에 태그를 추가하거나 삭제하는 것이 효과적입니다.
내 /view/posts/index.html.erb 필자는 tags 테이블을 성공적으로 쿼리하고 태그 그룹을 그룹화하고 태그 이름 옆에 카운트를 표시하는 섹션을 가지고 있습니다 (부수적으로 태그 이름이 포함 된 열, 'name'대신 'tag_name'이 있어야 함). 또한이 그룹의 표시는 PostsController의 index 메소드를 참조하는 링크입니다. 그것이 바로 문제가되는 곳입니다.
/posts로 이동하면 태그 그룹 링크를 클릭하지 않고 매개 변수가 전달되지 않으므로 오류가 발생합니다. 나는 비어있다? 거기에서 무엇이 잘못되고 있는지 확실하지 않습니다. 당신이 empty?
을 요구하고있다
오류
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.empty?
/views/posts/index.html.erb
<% @tag_counts.each do |tag_name, tag_count| %>
<tr>
<td><%= link_to(tag_name, posts_path(:tag_name => tag_name)) %></td>
<td>(<%=tag_count%>)</td>
</tr>
<% end %>
가 PostsController 여기
def index
@tag_counts = Tag.count(:group => :tag_name, :order => 'updated_at DESC', :limit => 10)
@posts=Post.all(:joins => :tags,:conditions=>(params[:tag_name].empty? ? {}:
{ :tags => { :tag_name => params[:tag_name] }}
)
)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @posts }
format.json { render :json => @posts }
format.atom
end
end
모든 도움을 주셔서 다시 한 번 감사드립니다. 위에 주어진 4 블록의 유일한 코드는 BaroqueBobcat에 의해 게시 된 두 번째 집합이지만 인덱스 뷰에 게시물을 여러 번 표시합니다. 실제로 표시되는 횟수는 해당 게시물의 태그 수와 직접적으로 관련이 있습니다. 그 문제를 해결하는 방법에 대한 아이디어가 있습니까? – bgadoci
명확하게하기 위해 태그 그룹을 클릭하여 매개 변수를 전달할 때가 아니라 인덱스보기에서만 반복됩니다. – bgadoci
답변을 업데이트했습니다. 픽스는 tag_name이있는 경우에만 조인을 사용합니다. –