2014-03-26 4 views
0

두 테이블을 공급하는 중첩 모델 양식이 있습니다. 내 장소 양식을 내 게시물 양식에 중첩했습니다. 내 show.html.erb 파일에 중첩 된 데이터를 어떻게 표시합니까?어떻게 중첩 된 양식의 데이터를 레일에 표시합니까?

<h1>My Update</h1><br> 
<p>my status: <%= @post.status %></p> 
<p>this is the upload: <%= link_to @post.upload, @post.upload %></p> 
<p><%= @place.address %></p> 

마지막 줄에 "NoMethodError in Posts # show"오류가 표시됩니다.

그것은 "무기 호에 대한 정의되지 않은 메서드`주소 'NilClass"라고 당신이 모든 코드를보고 싶다면

은, 난 그냥 GitHub의에 밀었다. http://bit.ly/1dsu94Y

+0

오류는'@ place'가 nil이라고 말합니다. 이 뷰를 렌더링하는 컨트롤러 동작을 다시 확인 했습니까? – vee

+0

show 메소드에'@place = Place.find params [: id]'코드를 추가했습니다. 내 양식이 데이터베이스의 Places 테이블을 채우지 않는 것 같습니다 ... – paris

+0

routes.rb도 중첩 된 리소스에 대해 유효하지 않습니다. 게시물 리소스를 내부 리소스 블록으로 만들어야하며, 포스트 리소스 주위에 끝내야합니다. – Abk

답변

0

PostsController#show method에 @place 인스턴스 변수를로드하지 마십시오. show 메소드에서이를로드하면 앱의 데이터, 모델 등을 기반으로해야하지만 더 이상 오류가 표시되지 않습니다.

+0

Ok -'code @place = Place.pluck params [: address]' – paris

+0

에 추가했습니다. 내 양식이 Places 테이블에 주소를 저장하지 않고있는 것 같습니다. 그래서'code @ post.place = Place.new params [: address]'PostsController # create method – paris

1

당신이 @place 인스턴스 변수를 설정하지 않은 것처럼

<p><%= @post.place.address %></p> 

으로 업데이트

<p><%= @place.address %></p> 

, 당신은 오류가 있습니다. 코드를 보면 PlacePost 모델 사이에 1-M 관계가 있다는 것을 알았습니다. 따라서 post이 속한 placeaddress을 표시하려면 위에서 언급 한 것처럼 할 수 있습니다.

+0

고마워요! 그건 의미가 있습니다. – paris

+0

@siriusparis 문제가 해결되면 답변을 수락하십시오. –

관련 문제