1

我正在努力创建一个选项,供用户选择图像作为图像索引视图 ( @image.each do |image|) 的专辑封面。但是,要使其生效,单选按钮的 for 必须跨越每个图像。我能想到的唯一方法是radio_button_tag@image.each do |image|循环中设置 a 。这没有实现form标签。

我希望能够在按下单选按钮时: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 !@images.blank? %>
    <% @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 %>

任何帮助将不胜感激!

4

1 回答 1

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");
});
于 2013-04-25T23:29:08.797 回答