【问题标题】:Rails 3 routes issue Routing ErrorRails 3路由问题路由错误
【发布时间】:2012-08-23 06:47:19
【问题描述】:

我的routes.rb

resources :users do
    resources :requests , :only => [:new,:create,:destroy]
end

user.rb

class User < ActiveRecord::Base
    attr_accessor :password
    attr_accessible :email, :firstname, :lastname, :state, :city, :password, :password_confirmation, :image
 # mount_uploader :image, ImageUploader
 has_many :requests

request.rb

class Request < ActiveRecord::Base
    attr_accessible :email, :status, :user_id
    belongs_to :user
end

用户登录后,我从 user.show 页面传递一个链接

<li><span>  <%= link_to "Send Request" , new_user_request_path(@user)  %> </li>

我的路径显示正确,但在 request.new 下未显示,并且出现以下错误。

路由错误

No route matches {:controller=>"users", :action=>"edit"}

我是 Rails 新手,谁能帮帮我。

谢谢

【问题讨论】:

  • 请清理你的代码示例,它很难阅读。
  • 我正在尝试清理我的代码。对于给您带来的不便,我深表歉意。
  • 我正在尝试调用操作:新控制器:请求
  • 如果您将代码缩进 4 个空格(或更多),它将显示为代码 sn-p,这样更易​​于阅读。
  • 您的错误是指edit 操作,这看起来很奇怪,因为您正在调用new 操作。你确定这是正确的错误信息吗?

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

看起来您正在调用 edit 操作而不是 new 操作。这可以解释错误,因为您需要将请求与用户一起传递给edit_user_request_path(因为请求是嵌套资源),如下所示:

edit_user_request_path(@user, @request)

请再次检查您的代码,看看错误究竟来自何处。

【讨论】:

  • 我不想要edit_user_request,当点击链接时它应该带我去请求/新建。目前当我点击发送请求链接时,url是localhost:3000/users/9/requests/new。页面上显示的错误是 Routing Error No route matches {:controller=>"users", :action=>"edit"} 尝试运行 rake routes 以获取有关可用路由的更多信息。
  • 那么为什么错误指的是edit 操作?您在此处所写的内容中缺少某些内容。
  • 事实上,它指的是users控制器也很奇怪,因为请求应该去requests控制器。看起来您在某处有 edit_user_path,但没有提供 @user 作为参数,这与您所描述的完全不同。
  • 不确定..过去 2 天我一直在努力解决这个问题。请求表由 user_id、email、status 组成,其中 user_id 是外键。我想要实现的只是一个用户可以通过电子邮件邀请其他人。我正在尝试呈现新的请求表单(_form)
  • 你是对的..我确实有另一个链接叫做我的帐户&lt;ul&gt; &lt;li&gt; &lt;span id="welcome"&gt; &lt;%= link_to "Home" , @current_user %&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;span id="welcome"&gt; &lt;%= link_to "My Account" , edit_user_path(@user) %&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span&gt; &lt;%= link_to "Send Request" , new_user_request_path(@user) %&gt; &lt;/li&gt; &lt;li&gt;&lt;span&gt; &lt;%= link_to "Sign out" ,signout_path ,:method =&gt; :delete %&gt; &lt;/li&gt; &lt;/ul&gt;
猜你喜欢
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 2011-05-24
相关资源
最近更新 更多