2012-09-21 2 views
-1

Быстрый вопрос Rails, с которым мне бы очень хотелось помочь вашим парням. Я оглядывался за ответом, и все, что там кажется, похоже на более сложную сторону для того, что я считаю решением. У меня есть две страницы, которые используют модель (Пользователь) и форму на каждой странице, которая обновляет другой атрибут при сохранении.Условная валидация на разных страницах - рельсы

  • One обновляет свои данные паролей (проверка для наличия пароля)

  • One обновляет ответ их викторины в (проверка для 300 макс символов)

Как я могу сделать условное валидация, чтобы при отправке формы проверки появились на их соответствующих страницах? Нужно ли мне два отдельных действия? Как связать эти действия с формой submit?

Вот родовое действие обновления и форма:

контроллер Пользователи

def update 
    @user = User.find(params[:id]) 
    if @user.update_attributes(params[:user]) 
    flash[:success] = "All is updated" 
    sign_in @user 
    redirect_to @user 
    else 
    render 'edit' 
    end 
end 

Форма

<p><h3>Linked-In Optimization</h3></p> 
<%= form_for(@user) do |form| %> 
    <p><%= form.label :linkedin, 'Please copy and paste your Linked-In profile here (575 chars max.)' %></p> 
    <p><%= form.text_area :linkedin %></p> 
    <%= form.submit 'Save' %> 
    <img class="linkedin" src="/linkedin.png"> 
<% end %> 
+0

ваш вопрос очень неясен. Можете ли вы вставить весь свой код «как страницы просмотра», так и код контроллеров. –

+0

Вы правы, я должен был быть более ясным. В любом случае, спасибо за помощь ниже. Вот что я сделал: в представлениях: <% = form_for (@user,: url => update_linkedin_user_path (@user)) do | f | %> и в маршрутах я добавил это ниже «resources: users» - «put» update_linkedin ',: on =>: member ". (Также создано действие в контроллере.) – D060703

ответ

0

Чтобы упростить вещи, использовать два отдельных действия контроллера.

Чтобы связать вашу форму представить новые пути, сделать это

<%= form_for(@user, :url => update_password_user_path(@user)) do |f| %> 

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

+0

Спасибо за помощь! Понял. – D060703

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