Sqlite на рельсах проблема с отношениями - PullRequest
0 голосов
/ 05 августа 2010

У меня проблема с отношениями при использовании sqlite3 на рельсах.

Сначала я создаю свои скаффолды, добавляю ссылки на файлы миграции, добавляю к моделям принадлежащих принадлежностей, а затем запускаю и запускаю базу данных с помощью простой команды rake db: migrate.я думаю, что есть пропущенный шаг, который я не могу понять: S

Кстати, я пытаюсь реализовать пример talewiki по созданию динамических веб-сайтов Web 2.0 с Ruby on Rails, я на странице 75Пример на mysql.

class GenresController < ApplicationController
  # GET /genres
  # GET /genres.xml
  def index
    @genres = Genre.all

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

  # GET /genres/1
  # GET /genres/1.xml
  def show
    @genre = Genre.find(params[:id])

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

  # GET /genres/new
  # GET /genres/new.xml
  def new
    @genre = Genre.new

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

  # GET /genres/1/edit
  def edit
    @genre = Genre.find(params[:id])
  end

  # POST /genres
  # POST /genres.xml
  def create
    @genre = Genre.new(params[:genre])

    respond_to do |format|
      if @genre.save
        format.html { redirect_to(@genre, :notice => 'Genre was successfully created.') }
        format.xml  { render :xml => @genre, :status => :created, :location => @genre }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @genre.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /genres/1
  # PUT /genres/1.xml
  def update
    @genre = Genre.find(params[:id])

    respond_to do |format|
      if @genre.update_attributes(params[:genre])
        format.html { redirect_to(@genre, :notice => 'Genre was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @genre.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /genres/1
  # DELETE /genres/1.xml
  def destroy
    @genre = Genre.find(params[:id])
    @genre.destroy

    respond_to do |format|
      format.html { redirect_to(genres_url) }
      format.xml  { head :ok }
    end
  end
end

1 Ответ

0 голосов
/ 05 августа 2010

В этой строке происходит ошибка:

@genre = Genre.find(params[:id])

, дающая

ActiveRecord :: RecordNotFound в GenresController # show Не удалось найти жанр с ID = tales

Это означает, что params[:id] имеет значение "tales", что неверно.Я предполагаю здесь, но я держу пари, что где-то в форме или в другом месте есть попытка сделать GET на /genre/tales вместо /tales/genre/:id (где: id должен быть целым числом).Я также предполагаю, что у вас есть отображение в routes.rb, например:

map.resources :tales, :has_many => :genres

У меня нет копии книги, которую вы читаете.

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