0
내가 리소스로 내 앨범 모델을 매핑하는 내 routes.rb의 라인을 가지고 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의 방법
<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 %>
와우. 그게 효과가 있었어. 그런데 왜 작동 했습니까? 내보기에서 "% 23"은 무엇입니까? 그 앨범 개체의 원시 표현의 일종 아닌가요? 따라서 to_param 메소드를 작성하면 오브젝트 표현 대신 객체의 ID가 어떻게 표시되는지 어떻게 알 수 있을까요? "% 23 "?이 코드로 개체를 나타내는 기본 to_param 메서드가 있기 때문입니까? 놀랄 만한. 네가 어떻게 이해했는지 알고 싶다. Rails의 내부 구조를 이해해야합니다. –
Baker
내부는 respond_to를해야합니까? to_param을 호출하기 전에 확인하십시오. 왜냐하면 route 메소드도 정수, 배열 및 해시를 허용하기 때문입니다. % 23는 ActiveRecord와 같은 객체가 해당 메소드를 덮어 쓰지 않는 한 Ruby가 inspect 메소드를 통해 객체를 노출하는 방식 인 # 의 url 인코딩입니다. DM 모델은 AR이나 배열 또는 해시가 아니므로 문자열 보간의 일부로 객체에 대해 호출 된 to_s를 얻습니다. 나는 경로 메쏘드로 보내고있는 어떤 객체를 망칠 기회가 있었기 때문에, 전에이 문제를 보았습니다. –
austinfromboston
설명해 주셔서 감사합니다. – Baker