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

Вам не нужны никакие вложенные атрибуты здесь. вы находитесь в контроллере Store, и я предполагаю, что новый вид магазина # тоже. Таким образом, вы просто создаете хранилище с полем user_id, поскольку current_user.id или current_user.stores.build(params[:stores]) должны работать в вашем методе создания.

Давайте посмотрим ваш взгляд первый тоже, и что консоль сказать, когда вы делаете u = User.first; u.stores.create!

Наконец, имо, это просто пользователь имеет много магазинов ассоциации, нет необходимости в HABTM.

+0

Hey Pjammer, спасибо за ваш ответ, к сожалению, я до сих пор не могу его фактически сохранить в базе данных. Это не вызывает каких-либо ошибок вообще, просто не сохраняется в моей таблице магазинов - вы знаете, почему это может быть? –

+0

Когда вы используете метод bang 'create!', Он сохраняет в db или ошибки. Обычно это только два варианта. если вы можете вставить консоль, создав «User.first.stores.create!», это не значит, что я не верю вам, но ... – pjammer

+0

Эй, Пьямер, я просто дал вам представление об 'User.first.stores. create! ', и он с радостью добавил строку магазина в таблицу магазинов, включая user_id. Затем я пытаюсь сделать то же самое в своем представлении, хотя 'current_user.stores.create! (Params [: stores])', и он не работает - не является ли это элементом params? Еще раз спасибо за вашу помощь :) –