link_to_remote в рельсах, проблемный проход: id - PullRequest
0 голосов
/ 04 апреля 2010

У меня проблема с использованием link_to_remote

link_to_remote пример документа сказать

link_to_remote "Delete this post", :update => "posts", :url => { :action => "destroy", :id => post.id }

этот код сделать ниже HTML-код

<a href="#" onclick="new Ajax.Updater('posts', '/blog/destroy/3', {asynchronous:true, evalScripts:true}); return false;">Delete this post</a>

но мое приложение нет. мой HTML

<a href="#" onclick="new Ajax.Updater('posts', '/blog/6', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('2C4Yo8OIDN+dm9oieL37uRg++PuWa8LCz18gW5Cu+Vg=')}); return false;">Delete this post</a>

где уничтожить в URL?

я ожидал '/ blog / destroy / 6', но на самом деле 'blog / 6'

в чем проблема?

моя версия рельсов - 2.3.5


добавить вопрос

действительно моя проблема в действии обновления

я хочу использовать ниже код

link_to_remote "toggle", :url => { :action => "update", :id => post.id }

но этот код не 'blog / update / 6', это также 'blog / 6' ...

если щелкнуть ссылку, сделайте эту ошибку

ActionController::UnknownAction (No action responded to 6. Actions: create, index, new, show, and update):

.... мой route.rb по умолчанию

ActionController::Routing::Routes.draw do |map|
  map.resources :aaa

  map.resources :timetables
  map.resources :alarams
  map.resources :users

  map.login 'login', :controller => 'user_sessions', :action => 'new'  
  map.logout 'logout', :controller => 'user_sessions', :action => 'destroy'  
  map.resources :user_sessions  

  # The priority is based upon order of creation: first created -> highest priority.

  # Sample of regular route:
  #   map.connect 'products/:id', :controller => 'catalog', :action => 'view'
  # Keep in mind you can assign values other than :controller and :action

  # Sample of named route:
  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
  # This route can be invoked with purchase_url(:id => product.id)

  # Sample resource route (maps HTTP verbs to controller actions automatically):
  #   map.resources :products

  # Sample resource route with options:
  #   map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }

  # Sample resource route with sub-resources:
  #   map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller

  # Sample resource route with more complex sub-resources
  #   map.resources :products do |products|
  #     products.resources :comments
  #     products.resources :sales, :collection => { :recent => :get }
  #   end

  # Sample resource route within a namespace:
  #   map.namespace :admin do |admin|
  #     # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
  #     admin.resources :products
  #   end

  # You can have the root of your site routed with map.root -- just remember to delete public/index.html.
  map.root :controller => "welcome"

  # See how all your routes lay out with "rake routes"

  # Install the default routes as the lowest priority.
  # Note: These default routes make all actions in every controller accessible via GET requests. You should
  # consider removing or commenting them out if you're using named routes and resources.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010

Вам необходимо добавить :method => 'delete' к параметрам вашей ссылки. Похоже, вы объявили posts как ресурс в своей таблице маршрутизации.

0 голосов
/ 05 апреля 2010

Полагаю, вы используете генератор изящных скаффолдов, который дает вам возможность включить / исключить действие уничтожения. Если это не тот генератор, который вы используете, то в вашем контроллере не определено действие «уничтожить». Отсюда и ошибка:

ActionController :: UnknownAction (Ни одно действие не ответило на 6. Действия: создать, индексировать, новый, показать и обновить):

У вас нет действия «уничтожить» в контроллере для ответа.

...