복붙노트

[RUBY-ON-RAILS] 레일에 jQuery를 포스트

RUBY-ON-RAILS

레일에 jQuery를 포스트

내 설치가 : 3.0.9, 루비 1.9.2, jQuery를 1.6.2 레일

쇼 여러 장의 사진과 사용자의 의견과 내가 의견을 인라인으로 구현하고자하는 것을 나는 양식을 가지고있다.

<div id="newsfeed">    
 <div> 
 <div class="photo_title">Summer 2011</div> 
 <div class="newsfeed_photo"> 
 <a href="..." /></a> 
 </div> 
 <textarea class="comment_box">Write a comment...</textarea>  
</div> 
<div> 
 <div class="comment_title">Seeing a movie</div> 
 <textarea class="comment_box">Write a comment...</textarea>  
</div> 

나는이 텍스트 영역 필드에 키 입력 치는 사용자에 AJAX와 게시물을 제출합니다. 여기에 자바 스크립트 (불완전) 내가 지금까지 가지고있어

  $('#newsfeed').delegate('.comment_box', 'keydown', function (event){
    event.preventDefault();
    $.post('/sub_comments', ...);
  });

내용이 다른 AJAX 호출로 대체 될 수 있기 때문에 대리자 방법을 사용하고 있습니다. 내가 필요하면 내가 액세스에 PARAMS의 값을 방법을 가지고 있다고 가정 등 말의 photo_id 같은 어떤 형태의 PARAMS를 전달해야 가정 jQuery를 게시하는 방법에 대한 구문 작성 PARAMS에 포스트 호출 방식에 대한 구문 무엇 레일을 기대

여기에 표준 비트 레일 있어요

sub_comments_controller.rb

  def new
    @sub_comment = SubComment.new

    respond_to do |format|
      format.html # new.html.erb
      format.js
    end
  end

또한 내가 평소 사용하지 않는 <% = form_for (@sub_comment을 : 원격 => true)가 할 | F | %> 각 내가 추가 할 수있는 모든 인라인 코멘트. 또한 라이언 베이츠의 railscast을 살펴본했지만 코드를 보이는 오래된.

해결법

  1. ==============================

    1.당신은 설치 레일 종료에 올바르게 해석되는만큼 어떤 방식으로 데이터를 구조화하는 게시물을 할 수 있지만, 가장 좋은 방법은 모든 값 '모델 이름'의 객체를 가지고있다.

    당신은 설치 레일 종료에 올바르게 해석되는만큼 어떤 방식으로 데이터를 구조화하는 게시물을 할 수 있지만, 가장 좋은 방법은 모든 값 '모델 이름'의 객체를 가지고있다.

    자바 스크립트

    $.ajax({
        url: "/sub_comments",
        type: "POST",
        data: {subcomment: {
                 field: val, 
                 field2: val, etc... }},
        success: function(resp){ }
    });
    

    울타리

    def create
      @sub_comment = SubComment.new params['subcomment']
      if @sub_comment.save
        render :json => { } # send back any data if necessary
      else
        render :json => { }, :status => 500
      end
    end
    
  2. from https://stackoverflow.com/questions/7237720/jquery-post-to-rails by cc-by-sa and MIT license