У меня есть линия в моем 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 %>