2014-01-28 6 views
0

POST 메서드를 사용하여 변수를 jQuery를 통해 전달하려고합니다. 컨트롤러에 저장 한 다음 Rails HTML에서 동일한 변수를 사용하여 테이블을 쿼리합니다.Ajax를 사용하여 레일스에 게시하려면 어떻게해야합니까?

변수를 컨트롤러에 전달하는 것처럼 보이지 않습니다.

jQuery를 :

var id = 1; 

$.post("http://localhost:3000/teamplayers", {'ids': ids}); 

Teamplayers 컨트롤러 :

def index 
    @teamplayers = Teamplayer.all 
    @ids = params[:id] 
end 

레일 HTML : 또한

<select id = "test3" style= float:right size= 10> 
<% Teamplayer.find_each(:conditions => "teamid = @ids") do |tp| %> 
    <option> <%#[email protected] %></option> 
    <option>Players on team 1</option> 
<% end %> 
</select> 

, 나는 다음과 같은 아약스 방법을 사용하려고하지만에 내 페이지를 다시 게시 내가 지정한 태그.

아약스 :

$(document).ready(function(){ 
    $("button").click(function(){ 
     $.ajax({url:"http://localhost:3000/teamplayers",success:function(result){ 
     $('#div1').text(result); 
    }}); 
}); 
}); 

내가 POST 또는 Ajax를 사용하고있는 방식에 문제가 무엇입니까? 첫 번째 문제의

+0

POST가 아닙니다. 하지만 서버를 치고 결과를 div에로드하려면'$ ('div1') .load (blah blah blah)'만 있으면됩니다.내 페이지의 html을로드 한 – Phlip

+0

, 내 Teamplayer 모델을 통해 내 데이터베이스에서 사람들의 목록을로드하려면 어떻게해야합니까? – user3240928

+0

동일한 페이지에서 select_tag에로드하려고합니다. – user3240928

답변

2

하나는 컨트롤러에 : 당신이 params[:ids]을 요청해야 할 때 {'ids': ids}를 통해 jQuery를 땅에서 그것을에서 통과 이후가 잘못 params[:id] 요청하고 있습니다. 성공 핸들러 함수를 $.post 함수에 전달하여 응답을 처리하고 무언가를 수행 할 수 있도록해야합니다.

당신이 @ids를 인스턴스화하면 제대로 모델의 찾기 방법에 직접 전달할 수 있습니다

<% Teamplayer.find(@ids) do |tp| %> 

을 그리고 그 ID를 가진 모든 Teamplayers을 찾을 수 있습니다. 여기에서 Rail's form helpers을 사용하여 해당 HTML 선택 목록을 생성 할 수 있습니다. 대신이의 :

<select id = "test3" style= float:right size= 10> 
<% Teamplayer.find_each(:conditions => "teamid = @ids") do |tp| %> 
    <option> <%#[email protected] %></option> 
    <option>Players on team 1</option> 
<% end %> 
</select> 

이 작업을 수행 : options_from_collection_for_select 마지막 인수가 "이름이"단지 예입니다

<%= select_tag "test3", options_from_collection_for_select(Teamplayer.find(@ids), "id", "name") %> 

참고. 옵션 태그에서 텍스트로 사용하려는 Teamplayer 테이블의 필드 이름으로 변경해야합니다. teamid 일 것입니다.

마지막으로 아약스의 마지막 통화로 무엇을 하려는지 확실하지 않습니다. 앞에서 언급 한 내용이 원래 문제를 해결할 수 있기를 바랍니다. 당신은 그냥 변수 이름 지정 문제를 가지고있는 것처럼

+0

: %>'오류 페이지는 다음과 같이 말합니다 : ID없는 Teamplayer를 찾을 수 없습니까? 올바르게 전달되지 않았습니까? – user3240928

+0

컨트롤러와 할당 된 매개 변수 [: ids]를 @ids로 수정 했습니까? @ids가 설정되어 있고 정수 배열을 가지고 있는지 확인하십시오. – DiegoSalazar

+0

@ids = params [: ids] 그냥 – user3240928

0

은 같습니다 - 'IDS'에 'ID를'이름을 바꿀 경우 필요한 :

jQuery를 :

var ids = 1; 
$.post("http://localhost:3000/teamplayers", {'ids': ids}); 

Teamplayers 컨트롤러 :

@ids = params[:ids] 
+0

을 이렇게 설정합니다 :'var ids = 1; $ .post ("localhost : 3000/teamplayers", { 'ids': ids}), ' – user3240928

+0

oops - 여전히 내 대답에 오류가있었습니다! 이제 고정 –

+0

괜찮 았어.이 문장에서 그 변수를 사용하려고했다. '<% = select_tag "test3", options_from_collection_for_select (Teamplayer.find (@ids), "id", "playerid") %>' 오류 : ID없이 Teamplayer를 찾을 수 없습니다. – user3240928

관련 문제