2013-04-25 98 views
1

我正在努力为用户选择一个图像作为图像索引视图(@image.each do |image|)的专辑封面。但是,为了有效,单选按钮必须跨越每个图像。我能想到的唯一方法就是在@image.each do |image|循环中设置一个radio_button_tag。这不会实现form标记。单选按钮问题ajax rails

我希望能够将图像表的:albumcover字段更改为图像的ID(获得该部分)当单选按钮被按下时。

我的企图代码如下。我在加载页面时遇到此错误。

错误

undefined method `ajaxUpdate_admin_album_image' for #<#<Class:0x102450300>:0x1021e94b8>` 

的jQuery(images.js.erb)

$(function(){ 
    $('#albumcover_tag').bind('click', function(){ 
     $.ajax({ 
      type: 'PUT', 
      url: '<%= ajaxUpdate_admin_album_image(:admin, @album, @image) %>', 
      data: $('#albumcover_tag').val(), 
     }).success(function(){ 
      alert("success"); 
     }); 
    }); 
    $('.best_in_place').best_in_place(); 
}); 

路线

namespace :admin do 
    root :to => "dashboard#index" 
    resources :dashboard 
    resources :albums do 
     resources :images do 
      put :ajaxUpdate, :on => :collection 
     end 
    end 
    get "admin/album" 
    end 

控制器

def ajaxUpdate 
     @album = Album.find(params[:album_id]) 
     @image = @album.images.find(params[:albumcover]) 
     if @image.update_attributes(params[:image]) 
      flash[:notice] = "Successfully updated Image" 
     else 
      render "edit" 
     end 
    end 

查看

<% if [email protected]? %> 
    <% @images.each do |image| %> 
     <div class="item"> 
      <div class="image-box"> 
       <div class="source"> 
        <%= image_tag image.source %> 
       </div> 
      </div> 
      <div class="info"> 
       <div class="item-links"> 
        <%= link_to "Edit", edit_admin_album_image_path(@album, image.id), :id => "edit"%> 
        <%= link_to "Delete", 
         admin_album_image_path(@album, image.id), 
         :class => "item-link delete-image", 
         :method => :delete, 
         :remote => true, 
         :confirm => "Are you sure?" %> 
       </div> 
       <%= label(:albumcover, 'Set as Album Cover ', :style => "float: left;") %> 
       <%= radio_button_tag (:albumcover, image.id, false, :id => :albumcover_tag) %> //The Relevant Code 
      </div> 
     </div> 
     <% end %> 
    <% else %> 
     <p class="alert">No images in this album</p> 
    <% end %> 

任何帮助将不胜感激!

+0

我觉得应该是** ** ajaxUpdate_admin_album_image_path在你的js代码 – 2013-04-25 22:50:42

+0

同样的错误:/ ... – 2013-04-25 22:55:18

+0

你可以在您的终端中执行** rake routes **并找到方法 – 2013-04-25 23:00:00

回答

0

要调用URL或PATH帮助程序,您必须在路由名称中附加_url_path。我认为你的路由设置方式,你不需要:admin说法:

# images.js.erb 
$.ajax({ 
    type: 'PUT', 
    url: '<%= ajaxUpdate_admin_album_image_url(@album, @image) %>', 
    data: $('#albumcover_tag').val(), 
}).success(function(){ 
    alert("success"); 
}); 
+0

这仍然会产生相同的错误。我应该以不同的方式路线吗?从嵌套url(http:// localhost:3000/admin/albums/1/images)中调用它是否会影响结果? – 2013-04-26 02:15:43

+0

不,它应该没有关系......你可以发布你整个错误跟踪。当您使用该方法加载页面或单击该页面时,会显示错误。如果你得到**相同的**错误,你可能在代码中的其他地方以错误的方式使用了助手? – Vapire 2013-04-26 08:15:34

+0

我在页面加载时发生错误,所以我甚至没有机会尝试链接。我需要改变路线吗? – 2013-04-26 18:24:40