我有一个简单的网络应用程序,包含用户和帖子。我有一个索引控制器和视图,显示数据库中的帖子列表。使用该列表,它会显示一个链接到特定帖子的“显示”链接。
我正在尝试为用户复制该内容,但出现了问题。我有一个索引视图,显示数据库中的所有用户,我有一个“配置文件”链接,应链接到特定用户。 (显示操作已用于用户自己的帐户)请参阅下面的代码,用户配置文件操作与后显示操作相同但不起作用。
# 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.操作:创建,编辑,索引,新建,个人资料,显示和更新”
答案 0 :(得分:5)
路线从上到下进行评估。 users/1
:controller/:action/:id
被map.resources :users
抓住了,而不是map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
。将这两个“默认路由”移动到文件的底部。
{{1}}