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

您可能還需要使用創建或建立在你的控制器的create動作,而不是嘗試到新的。

還有上形成良好的Railscast嵌套模式:

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

0

你並不需要在這裏任何嵌套屬性。你在商店控制器中,我也假設商店#新視圖。因此,您只需使用user_id字段創建商店,因爲current_user.id或current_user.stores.build(params[:stores])應該在您的創建方法中工作。

讓我們看看你的觀點太第一,又是什麼控制檯說,當你做u = User.first; u.stores.create!

最後,國際海事組織,這僅僅是一個用戶擁有衆多門店的聯想,無需使用的habtm。

+0

嘿Pjammer,感謝您的回答,不幸的是我仍然無法將它保存到數據庫中。它根本不會拋出任何錯誤,只是不會保存到我的商店表中 - 你知道爲什麼這可能嗎? –

+0

當你使用bang方法'create!'時,它會保存到數據庫或錯誤中。通常這是唯一的兩種選擇。如果你可以粘貼你創建'User.first.stores.create!'的控制檯,那不是我不相信你,而是... – pjammer

+0

嘿Pjammer,我剛剛給你提出了'User.first.stores的想法。創建!',並愉快地將商店行添加到商店表中,包括user_id。然後我在我的視圖中嘗試同樣的東西,雖然'current_user.stores.create!(params [:stores])'並且它不起作用 - 是params元素是錯誤的嗎?再次感謝您的幫助:) –