0

사용자가 레일과 연관된 저장소를 만들 수있는 양식을 만들려고합니다.저장 만들기 데이터베이스에 저장 안 함

나는 has_many와 belongs_to 연관 관계를 가지고 있지만 연관이 작동하는지보기 위해 저장소에 데이터베이스를 저장하는 것처럼 보이지 않을 수도 있습니다. 내 상점에서 폼의 현재

# 새로운 뷰 내가 가진 :

<%= form_for @store do |f| %> 

<div class = "field"> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
</div> 

<%= f.submit "Submit" %> 

<% end %> 

내 새로운 만들 활동을 위해 나는

def new 
    @store = Store.new 
end 

def create 
    @user = current_user 
    @store = @user.stores.new(params[:stores]) 

    if @store.save 
    redirect_to store_path 
    else 
    render newstore_path 
    end 
end 

내 모델의 이름은 내 상점 컨트롤러에 다음 한 확실히 단수 (매장).

이것은 과거에 저에게 효과가 있었기 때문에 지금은 왜 그렇게 혼란스러워하고 있습니다.

중첩 된 리소스를 사용하여 두 모델을 성공적으로 연결하는 가장 쉬운 방법을 누군가가 보여줄 수 있다면 나는 지난 며칠 동안이 문제를 해결하기 위해 엄청난 도움이 될 수있는이 연결을 유지할 수있는 양식을 만들었습니다. 견고한 예가 도움이된다고 생각하십시오.

사람들이 제공 할 수있는 정보는 모두 훌륭합니다. 사전 :)이 이후

답변

1

감사는 당신은 아마

<%= form_for [@user, @store] do |f| %> 

당신은 또한 반대로 만들거나 컨트롤러의 생성 작용에 구축하여 보시기 바랍니다해야합니다, 중첩 된 자원에 대한 형태입니다 새로운 것.

중첩 된 모델 형태에 좋은 Railscast도 있습니다 :

http://railscasts.com/episodes/196-nested-model-form-revised

0

현재 중첩 된 속성이 필요하지 않습니다. 당신은 매장 컨트롤러에 있고 나는 가게 # 새보기도 생각합니다. 따라서 user_id 필드가 current_user.id 인 상점을 만들거나 current_user.stores.build(params[:stores])이 create 메소드에서 작동해야합니다.

이의 첫 번째 너무보기를 보자, 그리고 콘솔은 u = User.first; u.stores.create!

마지막으로는, IMO, 이것은 단지 사용자가 많은 상점 연결하는 HABTM에 대한 필요성을 가지고있다 수행 할 때 무엇을 말하는가.

+0

안녕하세요, Pjammer, 답장을 보내 주셔서 감사합니다. 불행히도 실제로 데이터베이스에 저장하지 못했습니다. 전혀 오류를 발생시키지 않고, 내 매장 테이블에 저장하지 않습니다. 왜 이런 일이 일어날 지 알 수 있습니까? –

+0

bang 메서드'create! '를 사용하면 db 또는 errors에 저장됩니다. 일반적으로 유일한 옵션입니다. 'User.first.stores.create! '를 생성하는 콘솔을 붙여 넣을 수 있다면 그것은 내가 당신을 믿지 않지만 ... – pjammer

+0

안녕하세요, Pjammer, 방금'User.first.stores. create! '를 호출하고 store_root에 store_root를 추가했습니다. 나는 'current_user.stores.create! (params [: stores])'와 같은 방식으로 똑같은 것을 시도해보고 작동하지 않는다. params 요소가 잘못 되었는가? 도와 주셔서 다시 한 번 감사드립니다. –

관련 문제