English 中文(简体)
RoR routing problem. Calling custom action, but getting redirected to show action
原标题:

I am working on a project in ruby on rails and I am having a very difficult time with a basic problem. I am trying to call a custom action in one of my controllers, but the request is somehow getting redirected to the default show action and I cannot figure out why.

link in edit.html.erb:

<%= link_to  Mass Text Entry , :action=>"create_or_add_food_item_from_text" %>

Error from development.log:

ActiveRecord::RecordNotFound (Couldn t find Menu with ID=create_or_add_food_item_from_text): app/controllers/menus_controller.rb:20:in `show 

routes.rb file:

ActionController::Routing::Routes.draw do |map|
map.resources :nutrition_objects
map.resources :preference_objects
map.resources :institutions
map.resources :locations
map.resources :menus
map.resources :food_items
map.resources :napkins
map.resources :users
map.resource  :session, :controller =>  session 

map.root :controller=> pages , :action=> index 

map.about   /about ,  :controller=> pages , :action=> about 
map.contact  /contact , :controller=> pages , :action=> contact 
map.home    /home ,    :controller=> pages , :action=> index 

map.user_home    /user/home ,   :controller=> rater , :action=> index 
map.user_napkins    /user/napkins , :controller=> rater , :action=> view_napkins 
map.user_preferences   /user/preferences ,:controller=> rater , :action=> preferences 

map.blog    /blog , :controller=> pages , :action=> blog 
map.signup   /signup ,  :controller=> users ,  :action=> new 
map.login   /login ,  :controller=> session , :action=> new 
map.logout   /logout ,  :controller=> session , :action=> destroy 

# Install the default routes as the lowest priority. 
map.connect  :controller/:action 
map.connect  :controller/:action/:id  
map.connect  :controller/:action/:id.:format 
end

Menus_controller.rb:

class MenusController < ApplicationController
...
   def create_or_add_food_item_from_text  
   end
...
end

create_or_add_food_item_from_text.html.erb simply has a div to show a form with a text box in it. I have the rest of my app working fine, but this is stumping me.

Any help is appreciated.

问题回答

Try adding the route to your file explicitly, before the :menus resources:

map.connect "/menus/create_or_add_food_item_from_text",
  :controller => "menus", :action => "create_or_add_food_item_from_text"

map.resources ...

Routes declared earlier have higher priority, and the problem here is that map.resources actually prevents certain paths from being routed.

Even regardless of this issue, it s good practice to map all paths explicitly, either through resources or named/unnamed routes, and ultimately eliminate the generic :controller/:action and :controller/:action/:id routes from your app.

link_to expects the path to your action as the second parameter - it looks like you are passing link_to the wrong path value. Check the development log to see what path rails thinks you are looking for.





相关问题
rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

SSL slowness in EC2

We ve deployed our rails app to EC2. In our setup, we have two proxies on small instances behind round-robin DNS. These run nginx load balancers for a dynamically growing and shrinking farm of web ...

Auth-code with A-Za-z0-9 to use in an URL parameter

As part of a web application I need an auth-code to pass as a URL parameter. I am currently using (in Rails) : Digest::SHA1.hexdigest((object_id + rand(255)).to_s) Which provides long strings like : ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

activerecord has_many :through find with one sql call

I have a these 3 models: class User < ActiveRecord::Base has_many :permissions, :dependent => :destroy has_many :roles, :through => :permissions end class Permission < ActiveRecord::...

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签