2014-02-10 4 views
0

У меня есть форма «изменить пользователя» в приложении Rails. Пользователь также содержит school_id. В моей пользовательской форме редактирования у меня есть раздел, который показывает, в какую школу подписывается пользователь. Рядом с названием школы у меня есть кнопка, которая устанавливает для пользователя user_id значение nil. Однако, поскольку на самом деле это форма со скрытым полем, пользователь может «сохранить изменения» в форме редактирования пользователя, и она установит значение__шт_и_и_и_и_и_и_у_и_у_и_и_из из-за другой формы, которую у меня есть на странице.Форма в форме в Rails?

псевдокод:

edit user information 
School: schoolname [button to remove school] 
edit more user information 
[Submit changes] 

Кнопка для удаления школы:

<% if current_user.school %>School: <b><%=link_to current_user.school.name, current_user.school %></b> 
    <%= form_for(@user) do |f| %> 
     <%= f.hidden_field(:school_id, :value => nil) %>    
     <%= f.submit "Remove school", class: "btn btn-danger btn-small" %> 
    <% end %> 

Есть ли способ, чтобы достичь этой цели без необходимости перемещения кнопки Remove школы вне формы? Он очень хорошо вписывается в рабочий процесс, но он вызывает проблемы, так как теперь это технически часть формы регистрации пользователя для редактирования. Есть идеи?

Спасибо!

+0

Вы можете посмотреть на эту статью http://weblog.rubyonrails.org/2009/1/26/nested -модель-формы/ – Rinku

+0

Будут ли вложенные формы работать здесь, хотя я все еще обновляю только одну модель? Я только обновляю модель User с помощью обеих форм. – winston

+1

Вы не должны вставлять формы - http://stackoverflow.com/questions/379610/can-you-nest-html-forms – bridiver

ответ

1

Вы можете достичь этого с помощью действия в контроллере.

Например Ввиду:

<%= link_to 'Remove school', user_path(@current_user), :method => :delete, :class => "btn btn-danger btn-small" %> 

В контроллере:

def destroy 
    @current_user.update_attribute(:value, nil) 
    respond_to do |format| 
     format.html{redirect_to :back} 
    end 
end 
+0

Спасибо! Это здорово! – winston

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