Нет ответа на мою ссылку - PullRequest
       17

Нет ответа на мою ссылку

1 голос
/ 25 февраля 2010

У меня есть простое веб-приложение с пользователями и сообщениями. У меня есть контроллер индекса и просмотра, который показывает список сообщений в базе данных. Со списком отображается ссылка «Показать», которая ссылается на конкретный пост.

Я пытаюсь повторить это для пользователей, но что-то идет не так. У меня есть индексное представление, которое показывает всех пользователей в базе данных, и у меня есть ссылка «Профиль», которая должна ссылаться на конкретного пользователя. (Действие «Показать» уже используется для собственной учетной записи пользователя). См. Код ниже. Действие «Профиль пользователя» такое же, как действие «Опубликовать», но оно не работает.

# 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

Когда я пытаюсь перейти к users / 1, я получаю сообщение «Ни одного действия не получено. Действия: создание, редактирование, индексирование, создание новых, профилей, показ и обновление»

1 Ответ

5 голосов
/ 25 февраля 2010

Маршруты оцениваются сверху вниз.users/1 получает :controller/:action/:id, а не map.resources :users, как вы намереваетесь.Переместите эти два «маршрута по умолчанию» в конец файла.

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...