Не могу найти <object>без ID рейки 3.0.1 - PullRequest
3 голосов
/ 08 января 2011

К сожалению, это мой второй пост за столько дней.Таким образом, приложение работало хорошо с mysql и rails 3.0.3, но я обнаружил, что мне нужно использовать MSSQL, поэтому мне пришлось понизить rails до 3.0.1.

В двух словах, я скопировал show.html.erb as show2.html.erb и создал новый метод, который является копией метода show.Затем я создал сопоставление маршрута.

мой контроллер

class fathersController < ApplicationController
  def show
    @father= Father.find(params[:id])

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

  def show2
    @father= Father.find(params[:id])

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

rout.rb

resources :fathers do
    match '/show2' => 'fathers#show2'
    resources :kids
end

когда я звоню

http://127.0.0.1:3000/father/1

Я получаюпредставление show, но когда я вызываю

http://127.0.0.1:3000/father/1/show2

, я получаю следующую ошибку

Couldn't find father without an ID

Параметры запроса возвращаются как

{"father_id"=>"1"}

, поэтому я знаю, чтопроблема заключается в том, что приложение передает идентификатор как Father_id, но как мне это исправить?Любая помощь будет оценена.

1 Ответ

1 голос
/ 08 января 2011

Есть две проблемы.

  1. Вы пытаетесь использовать нересурсный маршрут на маршруте, который на самом деле должен быть ресурсоемким.
  2. Похоже, вы пытаетесьотправить /show2 на контроллер с именем hospitals, когда ваше действие фактически указано на fathers контроллере.

Это должно помочь:

resources :fathers do
  get :show2, :on => :member
  resources :kids
end

Вы также можете написать выше как:

resources :fathers do
  member do
    get :show2
  end

  resources :kids
end    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...