没有响应我的链接的操作

时间:2010-02-25 18:37:25

标签: ruby-on-rails ruby routes

我有一个简单的网络应用程序,包含用户和帖子。我有一个索引控制器和视图,显示数据库中的帖子列表。使用该列表,它会显示一个链接到特定帖子的“显示”链接。

我正在尝试为用户复制该内容,但出现了问题。我有一个索引视图,显示数据库中的所有用户,我有一个“配置文件”链接,应链接到特定用户。 (显示操作已用于用户自己的帐户)请参阅下面的代码,用户配置文件操作与后显示操作相同但不起作用。

# users_controller.rb

  def index
    @users = User.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end

  def profile
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
  end

# posts_controller.rb

  def index
    @posts = Post.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @posts }
    end
  end

  def show
    @post = Post.find(params[:id])
    @user = User.find_by_id(@post.user_id)

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @post }
    end
  end

# users/index.html.erb

<h1>Listing All Users</h1>

<table>
  <tr>
    <th>Name</th>
    <th>Email</th>
  </tr>

<% @users.each do |user| %>
  <tr>
    <td><%= link_to user.login, user %></td>
    <td><%=h user.email %></td>
  </tr>
<% end %>
</table>

<br />

我在想我的路线可能有问题。但我看不到任何东西。

  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
  map.root :controller => "Home"
  map.resource :account, :controller => "users"
  map.resources :password_resets
  map.resources :users
  map.resource :user_session
  map.root :controller => "user_sessions", :action => "new"
  map.resources :users, :has_many => :posts

当我尝试去用户/ 1时,我得到“没有操作响应1.操作:创建,编辑,索引,新建,个人资料,显示和更新”

1 个答案:

答案 0 :(得分:5)

路线从上到下进行评估。 users/1 :controller/:action/:idmap.resources :users抓住了,而不是map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' 。将这两个“默认路由”移动到文件的底部。

{{1}}