我的 routes.rb 中有一行将我的专辑模型映射为资源:
map.resources :albums
但是,在 Rails 中使用 Datamapper 代替 ActiveRecord,为什么会这样:
format.html { redirect_to(@album) }
导致重定向到:
albums/%23<Album:0x72d452c>
代替:
albums/1
如果需要进一步的上下文,这里列出了我从 Controller 中创建的完整方法:
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 %>