1

我正在尝试通过 AJAX 调用将我的视图中的一些参数传递给我的照片控制器中的自定义方法 fetch_info。我的控制器似乎没有收到参数。当我单击图像以启动 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 回答