2015-12-14 3 views
0

Я пытаюсь присвоить переменную в моем контроллере params переменной для вложенных ресурсов.Парамс с вложенными ресурсами

Controller for Transactions: 
def create 
    @amount = params[:amount] 
    [...] 
end 


Routes: 
resources :accounts do 
    resources :transactions 
end 

View for New Transaction: 
<%= form_for([@account, @account.transactions.build]) do |f| %> 
    [...] 
    <%= f.label :amount %> 
    <%= f.text_field :amount %> 
    [...] 
    <%= f.submit %> 
<% end %> 

по какой-то причине возвращается nil. Ли линия @amount = params[:amount] работает только без вложенных ресурсов? Или я пропустил что-то еще?

+0

Это ничем не отличается, пожалуйста, покажите ваш вид – Vasfed

ответ

1

Вы уверены, что параметры [: amount] на самом деле существуют? Осмотрите содержимое переменной params в методе create, чтобы узнать, какие данные передаются вашему методу. Обычно в параметрах значения поля, такие как: сумма в вашем случае инкапсулируются именем модели, и вам нужно написать ссылку, такую ​​как params [: account] [: amount], чтобы получить к ней доступ.

+0

'Params [: транзакционный] [: сумма] ' – 0r4cl3

0

@amount - это переменная экземпляра в контроллере (которая передается в одноименное представление).

Это не то же самое, как метод суммы в вашем экземпляре счета (который возвращает атрибут суммы в вас модели)

Смежные вопросы