Условное именование Rails

#ruby-on-rails #ruby #ruby-on-rails-3

#ruby-on-rails #ruby #ruby-on-rails-3

Вопрос:

У меня есть _form partial, в котором rails автоматически называет кнопки отправки для меня, для новых и редактируемых представлений. В новом представлении я предпочитаю, чтобы значение кнопки отправки просто читалось «Создать» вместо «Создать ссылку»

Я добился этого с помощью <%= form.submit "Create" %>

Как мне заставить rails отображаться <%= form.submit "Update" %> в режиме редактирования и <%= form.submit "Create" %> в новом, ожидающем, в каком представлении отображается ‘_form.html.erb’? Спасибо

_form https://gist.github.com/1293210

Ответ №1:

Ну, я предполагаю, что вы передаете объект, например @user , например. В этом случае в вашей _form сделайте это:

 <% editing = @user.new_record? ? false : true %>
<% default_text = editing ? "Update" : "Create" %>
<% form.submit default_text %>
  

Я сделал здесь отдельные переменные editing и default_text, но вы могли бы сделать это в одной строке, например:

 <% form.submit @user.new_record? ? "Create" : "Update" %>
  

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

Редактировать Я должен также упомянуть, что смысл использования new_record? работает, если для нового пользователя (например) вы просто устанавливаете @user как User.new в вашем контроллере, но для редактирования вы делаете User.find(…) .

Комментарии:

1. Спасибо, я использовал @link.new_record? вместо user.

2. Пожалуйста. Обычно я просто использую @user в качестве примера перехода, хех.

3. Да, это моя первая итерация, поэтому я еще не создал пользователей