2011-04-01 5 views
0

는 내가 jQuery를 자동 완성 플러그인을 사용하고, 나는이 이벤트를 사용자 정의 할 : 드롭 다운 목록에서 요소를 선택하면application.js 파일에서 jQuery로 컨트롤러 동작을 어떻게 호출합니까?

select: function(event, ui) { 
      $('.topic_field').val(ui.item.topic.name); 
      return false; 

는 기본적으로는 콜백을 트리거합니다. 지금은 선택된 요소 만 텍스트 필드에 추가합니다. 필드를 모두 채우고 응용 프로그램에서 비디오 업데이트 컨트롤러 동작에 POST 요청을 보내 사용자가 명시 적으로 단추를 누를 필요가 없도록하고 싶습니다. 어떻게해야합니까?

UPDATE :

여기
<%= form_for @video, :url => {:action => "update"}, :remote => true do |f| %> 
    <div class="field"> 
    <%= f.text_field :topic_names, :class => "topic_field" %> 
    </div> 
    <%= f.submit "Add Topic" %> 
<% end %> 

내 jQuery 코드입니다 : 여기

비디오 컨트롤러의 쇼보기에서 폼이다는

var url = $('.edit_video').attr('action'); 
var val = ui.item.topic.name; 
$.post(url, {data:val}); 

이 내 routes.rb에 :

resources :videos 
resources :video_votes 
resources :users 
resources :profiles 
resources :genres 
resources :topics 
resources :topicables 
resource :session 
def update 
@video = current_user.videos.find(params[:id]) 

respond_to do |format| 
    if @video.update_attributes(params[:video]) 
    format.html { redirect_to(@video) } 
    format.js 
    else 
    format.html { render :action => "edit" } 
    end 
end 
end 

답변

0

체크 아웃 관련 컨트롤러 액션에 선택 상자에서 데이터를 게시하는 방법에 jQuery.post 문서를.

필자는 자동 완성 플러그인에 익숙하지 않지만 선택한 상자에서 onChange 이벤트를 따른 것으로 가정합니다. 사용자가 선택을하면, 다음 (테스트되지 않은)을 실행해야합니다

params[:data] 

당신의 선택 상자의 값을 반환 할 것이다 : 컨트롤러에서

var url = $('myForm').attr('action'); 
var val = $('mySelectBox').val(); 
$.post(url, {data:val}) 

, 당신이 사용하여 액세스 할 수 . 그런 다음 컨트롤러 코드에서 이것을 정상적으로 사용할 수 있습니다.

+0

그냥'type' 옵션을 통과해야합니까 업데이트 동작에 해당하는 URL로 'url' 옵션을 사용할 수 있습니까? –

+0

업데이트 작업에 해당하는 URL은 무엇입니까? –

+0

'type' 옵션을 POST로 기본 설정하지 않아도되며'url' 옵션은 명시 적으로 필요하지 않습니다. 왜냐하면 첫 번째 인수에서 문자열을 선택하기 때문입니다. –

0

이 액션 URL ("/ 주제/목록") 또는 비디오 # 업데이트에 뭔가

$.post('video/update', 
    data: {yourdata}, 
    function(data) { 
    //callback function 
    } 
); 

확인에서 데이터를 가져 오기 위해 JQuery와 아약스 기능을 사용 :3210 여기 내 업데이트 작업입니다 당신의 JS 요청에 대해 뭔가를 반환합니다 :

def update 
    blah 
    respond_to do |format| 
    format.js { return somethinghere } 
    end 
end 
+0

저는 일반적으로 그 기능에 문제가있었습니다. 예를 들어 주시겠습니까? –

+0

POST가 발생할 때 어떤 일이 발생하기를 원합니 까? 데이터베이스를 업데이트하고 싶습니까? 사용자를 리디렉션합니다. –

+0

데이터베이스를 업데이트하고 싶습니다. 양식의 버튼을 클릭 한 것과 똑같은 작업을 수행하고 싶습니다. –

관련 문제