2012-12-08 7 views
0

두 가지 콘테스트 및 제출 모델이 있습니다. 제출 belongs_to 컨테스트 및 컨테스트 has_many 제출. 색인에있는 검색을 위해 컨테스트 ID를 URL에 전달하십시오.

def index 
    contest_id = params[:contest_id] 
    @contest = Contest.find(contest_id) 
    if params[:search].blank? 
     @submissions = Submission.paginate(:per_page => 10, :page => params[:page]) 
    else 
     @submissions = Submission.search(params[:search]).paginate(:per_page => 10, :page => params[:page]) 
    end 
     @search = params[:search] 
end 

내가 생각하는 제출> 인덱스 뷰의 검색 양식을 통해 그것을 전달하는 올바른 방법 :

<div class ="span12 row"> 
    <%= form_tag submissions_path, :method => 'get', :class => "form-search pull-right" do %> 
    <%= text_field_tag :search, params[:search], :class => 'input-xlarge', :placeholder => 'Search by member, title or description' %> 
    <%= submit_tag "Search", :title => nil, :class => 'btn btn-primary' %> 
<% end %> 
</div> 

제출 index 액션에서

내가 검색을 그리고 나는 이것을 사용하여 가까이 올 수 있었다 :

<%= hidden_field :contest_id, @contest.id %> 

형태로, 그러나 그것을 t에서 돌려 보낸다. 그는 URL :

http://localhost:3000/submissions?utf8=%E2%9C%93&search=test&contest_id%5B%5D=&commit=Search 

그리고 오류 :

<%= hidden_field(:contest_id, :value => @contest.id) %> 

를하지만 유사한 URL 및 오류를 반환하는 것 :

Couldn't find Contest with id= 

나는 또한이 시도했습니다.

지금 당장 붙어 있습니다. 아이디어가 있으시면 알려주세요.

[편집 - 추가 HTML]

전에 검색 : 제출 쇼 페이지에서

:

<%= link_to 'Browse All Submissions', submissions_path(:contest_id => @contest.id), :class => 'btn btn-mini pull-right' %>` 

다음
<div class ="span12 row"> 
    <form accept-charset="UTF-8" action="/submissions" class="form-search pull-right" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div> 
     <input class="input-xlarge" id="search" name="search" placeholder="Search by member, title or description" type="text" /> 
     <input id="contest_id_5" name="contest_id[5]" type="hidden" /> 
     <input class="btn btn-primary" name="commit" type="submit" value="Search" /> 
    </form> 
</div> 

가 제출가는 다른 링크에서 작동하는 무슨이다

및 콘테스트 쇼 페이지 :

<%= link_to 'Browse All Submissions', submissions_path(:contest_id => @contest.id), :class => 'btn btn-mini pull-right' %> 

두 가지 모두 콘테스트를 찾기 위해 컨트롤러가 필요로하는 URL 인 "contest_id = 5"를 전달합니다. 검색에서 문제가되는 것은 contest_id = 5를 표시하는 데 필요한 올바른 구문을 찾는 것입니다.

+0

링크 – Lichtamberg

+0

@Lichtamberg으로 생성 된 HTML 코드를 제시해주십시오 내가 질문에 HTML 출력을 추가 바닥에서. –

+0

경로는 어떻게 생겼습니까? 중첩 된 리소스를 사용하고 있습니까? – gcastro

답변

0

이것은 쉬운 해결책으로 밝혀졌습니다. 검색 형태로 hidden_field_tag를 삽입 :

<%= hidden_field_tag 'contest_id', @contest.id %> 

이것은 PARAMS에 올바른 값을 전달합니다 :

http://localhost:3000/submissions?utf8=%E2%9C%93&search=new&contest_id=5&commit=Search 
관련 문제