0

我正在尝试创建一个表单,允许我的用户在 Rails 中创建与他们关联的商店。

我有一个 has_many 和 belongs_to 关联,但似乎无法让商店甚至保存到数据库中以查看关联是否有效。

目前对于我的商店中的表格#new 视图,我有:

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

我的型号名称也绝对是单数(商店)。

这在过去对我有用,所以我很困惑为什么现在不行。

如果有人可以向我展示使用嵌套资源成功关联两个模型的绝对最简单的方法,然后创建一个可以保持这种关联的表单,这将非常有用,因为我在过去几天一直在努力解决这个问题并且真的认为一个可靠的例子有助于。

不过,人们可以提供的任何信息都会非常好。提前致谢 :)

4

2 回答 2

1

由于这是嵌套资源的表单,您可能需要

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

您可能还想尝试在控制器的创建操作中使用 create 或 build,而不是 new。

嵌套模型的表单上还有一个很好的 Railscast:

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

于 2012-05-15T21:35:10.960 回答
0

You don't need any nested attributes here. you are in the Store controller and i assume the store#new view too. So you are just creating a store with the user_id field as current_user.id or current_user.stores.build(params[:stores]) should be working in your create method.

Let's see your view first too, and what does console say when you do u = User.first; u.stores.create!

Lastly, imo, this is just a User has many stores association, no need for a habtm.

于 2012-05-16T14:21:28.063 回答