Проблема с созданием формы для дочернего элемента в ".each do | f |"структура (форма для вложенного ресурса) в Rails 3 - PullRequest
0 голосов
/ 16 июня 2011

У меня есть учетная запись модели, которая has n, :transfers. В списке всех доступных аккаунтов

<% @accounts.each do |acc| %>
  <%= acc.name%>
  <%= acc.value%>
<%end%>

#in the controller
@accounts = @owner.accounts.all( :name.not => nil )

Мне нужно добавить опцию создания перевода с этого аккаунта, что-то вроде этого:

<%= form_for @new_transfer, :url => {:controller => "transfers", :action=>"create"} do |trans_form|%>
  <%= trans_form.text_field :amount %></br>
  <%= trans_form.text_field :to %></br>
  <%= trans_form.text_area :comment, :rows=>5 %></br>
  <%= submit_tag %>
<%end%> 

#in controller
@new_transfer = Transfer.new()

Как мне объявить родителя для этого нового дочернего элемента? Я пробовал что-то вроде <%= form_for acc.@new_transfer, @new_transfer = @accounts.each.transfers.new(), <%= form_for acc.transfers или fields_for, но ни один из них, похоже, не работает. Буду благодарен за любой совет.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Вам нужно посмотреть на маршруты, вам следует подумать о наличии вложенного маршрута для модели transfer в account, а в области уровня контроллера - переадресация вызовов на эту учетную запись.

Например,маршруты

resources :accounts do
  resources :transfers
end

Затем в контроллере ваших переводов с фильтром до, чтобы найти учетную запись (для всех действий, кроме действий с индексами) по account_id:

def create
  @transfer =  @account.transfers.new params[:transfer]

  ...

end 

Просмотр:

form_for @account, @transfer do ..

Подробнее о вложенных ресурсах:

http://guides.rubyonrails.org/routing.html#nested-resources

0 голосов
/ 16 июня 2011

Попробуй,

form_for(acc, acc.transfers.build) do |f|
.....
end
...