0

アルバム モデルをリソースとしてマップするために、routes.rb に次の行があります。

  map.resources :albums

ただし、Rails で ActiveRecord の代わりに Datamapper を使用すると、次の行は次のようになります。

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 の「new」メソッドからのフォーム送信の結果として呼び出されます。

<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 %>
4

1 に答える 1

3

Datamapper はto_paramメソッドをサポートしていますか、または Album モデルに実装しましたか? Rails 3 と ORM 間の違いをカバーする「ActiveORM」レイヤーができるまでは、コードが AR のような API に準拠していることを確認する必要があります。

メソッドがあり、これでもうまくいかない場合はto_param、昔ながらの方法で試してみてください。

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

不格好ですが、おそらく効果的です。

于 2009-06-08T01:41:59.973 に答える