Как установить предопределенное значение в форме в Rails - PullRequest
2 голосов
/ 25 мая 2010

Итак, я только начал работать с Rails и пытаюсь создать объект (в моем случае это book_loan) с формой. Дело в том, что я попадаю в эту форму, нажимая на книгу, поэтому передаю book_id в качестве параметра, например localhost: 3000 / loan / new? Id = 1.

Теперь я не хочу, чтобы пользователь мог установить поле идентификатора книги в форме, поскольку я уже знаю идентификатор. Поэтому мой вопрос заключается в том, как установить значение в форме. Я пробовал такие вещи, как:

<% form_for(@loan) do |f| %>
  <%= f.error_messages %>
  ...
  <%= @loan.book_id = params[:id] %>
  <%= f.submit 'Create' %>
<% end %>

без успеха. У кого-нибудь есть подсказка для меня?

Ответы [ 2 ]

5 голосов
/ 25 мая 2010

В действии create вашего контроллера вы можете получить экземпляр книги и затем создать новый заем через ассоциацию, передавая значения, представленные в форме. Как то так:

def new
  @loan = Loan.new
end

def create
  book = Book.find(params[:id])
  @loan = book.loans.build(params[:loan])
  @loan.save # etc...
end

Поскольку вы строите новый заем через ассоциацию, для него будет установлен правильный book_id.

2 голосов
/ 25 мая 2010

В вашем действии контроллера установите @loan.book_id на params[:id], затем в шаблоне:

<%= f.hidden_field :book_id %>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...