1

写真コントローラーのカスタムメソッドfetch_infoへのAJAX呼び出しを介して、ビューからいくつかのパラメーターを渡そうとしています。コントローラーがパラメーターを受信して​​いないようです。画像をクリックして AJAX 呼び出しを開始すると、端末に次のように表示されます。

Processing by PhotosController#fetch_info as JSON
  Parameters: {"id"=>"", "secret"=>""}
Completed 500 Internal Server Error in 267ms

FlickRaw::FailedResponse ('flickr.photos.getInfo' - Photo not found):
  app/controllers/photos_controller.rb:38:in `fetch_info'

fetch_info メソッドが呼び出されているように見えますが、パラメーターは空です。AJAX を介してパラメーターを渡すにはどうすればよいですか?

これが私の見解です。また、これを機能させる目的で、ビューにJavaScriptを入れています。

index.html.erb

<div class="body_container">

    <div id="photos_container">
    <% @photos_array.each do |p| %>

     <%= link_to '#' do %>
       <div class='each_photo_container', id='<%="#{p[:id]}"%>' >
         <%= image_tag p[:s_url] %>
       </div>
     <% end %>

    <!-- Load Modal onClick -->
    <script type="text/javascript">
    jQuery(function() {
     $('#<%=p[:id]%>').click(function (e) {

        //ajax call to fetch photo info
        var fetch_id = '<%=p[:id]%>';
        var fetch_secret = '<%=p[:secret]%>';

        $.ajax({
          type: 'GET',
          url: '/photos/fetch_info',
          dataType: 'json',
          data: { 'id' : fetch_id.val(), 'secret' : fetch_secret.val() } 
        });

        return false;
      });
    });

    </script>

    <% end %>

    <div class="basic_modal">
    </div>

 </div>
</div>

これが私のphotos_controller.rbです:

  def fetch_info
    puts params[:id]
    puts params[:secret]

    info = flickr.photos.getInfo(:photo_id => params[:id], :secret=> params[:secret])


  end
4

1 に答える 1

2

次のコードを使用できます。

$('##{p[:id]}').click(function (e) {

    //ajax call to fetch photo info
    var fetch_id = '#{p[:id]}';
    var fetch_secret = '#{p[:secret]}';

    $.ajax({
      type: 'GET',
      url: '/photos/fetch_info',
      dataType: 'json',
      data: { 'id' : fetch_id, 'secret' : fetch_secret } 
    });

    return false;
  })
于 2014-09-05T03:33:03.160 に答える