Перенаправляет с Datamapper & Rails - PullRequest
0 голосов
/ 08 июня 2009

У меня есть линия в моем rout.rb, чтобы отобразить мою модель Альбома как ресурс:

  map.resources :albums

Однако, используя Datamapper вместо ActiveRecord в Rails, для чего нужна эта строка:

format.html { redirect_to(@album) }

вызвать перенаправление на:

albums/%23<Album:0x72d452c>

вместо:

albums/1

В случае, если необходим дополнительный контекст, мой полный метод создания из контроллера указан здесь:

  def create
    @album = Album.new(params[:album])

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

Как принято, этот метод вызывается в результате отправки формы из моего «нового» метода в new.html.erb:

<h1>New album</h1>

<% form_for(@album) do |f| %>

  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.label :description %><br />
    <%= f.text_field :description %>
  </p>
  <p>
    <%= f.label :genre %><br />
    <%= f.text_field :genre %>
  </p>
  <p>
    <%= f.label :country %><br />
    <%= f.text_field :country %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', albums_path %>

1 Ответ

3 голосов
/ 08 июня 2009

Поддерживает ли Datamapper метод to_param или вы реализовали его в своей модели альбома? Пока у нас нет Rails 3 и слоя «ActiveORM» для покрытия различий между ORM, вы должны убедиться, что ваш код соответствует AR-подобному API.

Если - это to_param метод, и он все еще не работает, попробуйте сделать это по старинке:

format.html { redirect_to(album_path(@album.id)) }

Более грубый, но, скорее всего, эффективный.

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