2015-11-18 4 views
0

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

Heres ссылка на приложение я сделал: enter link description here

мой взгляд для индекса является:

<div class="container"> 
    <h1 class="text-center">Listing Students</h1> 
    <div class ="jumbotron"> 
     <table class="table table-hover"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Points</th> 
       </tr> 
      </thead> 
      <% @users.each do |user| %> 
       <tr> 
       <td><%= user.name %></td> 
       <td><%= user.points %></td> 
       <td><%= link_to 'Edit', edit_user_path(user) %></td> 
       <td><%= link_to 'Delete', user, method: :delete, data: { confirm: 'Are you sure?' } %></td> 
       </tr> 
      <% end %> 
     </tbody> 
    </table> 
    </div> 
    <br> 
    <%= link_to 'New Student', new_user_path, class:'btn btn-primary' %> 
</div> 

Я попытался с помощью кода в моей странице редактирования:

<div class="container"> 
<div class=" text-center"> 
    <div class="col-md-6 col-md-offset-3"> 
     <div class= "well well-lg"> 
       <%= render 'form' %> 
       <%= link_to 'Back', users_path, class:"back" %> 
      </div> 
     </div> 
    </div> 
</div> 

к сделать форму в индексе, но это дает мне ошибку @user не может быть nill

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

ответ

0

Несомненно, вы можете использовать simple_form или form_for. Или вы можете сделать редактирование на месте. Ваш вопрос не очень точен относительно того, что вам нужно.


UPDATE 1:

Предполагая, что вы добавили simple_form камень в Gemfile, и что у вас есть что-то подобное в routes.rb: resources :users, а затем изменить вид UsersController может выглядеть это:

#in controller 
def edit 
    @user = User.find(params['id']) 
end 

И вид:

<%= simple_form_for @user do |f| %> 
    <%= f.input :name %> 
    <%= f.input :points %> 
    <%= f.button :submit %> 
<% end %> 

Пожалуйста, попробуйте и дайте мне знать, если это сработает для вас (вид редактирования; для того, чтобы упорствовать, вам также потребуется и обновить действие).

+0

bosskovic Я попытался использовать form_for @user, и он дал мне ошибку, и когда я пытаюсь отобразить страницу редактирования, она также дает мне и errir –

+0

, пожалуйста, посмотрите, я обновил ответ. – bosskovic

+0

К сожалению, он даже не появился правильно, я получил ошибку «неопределенный метод' model_name »для nil: NilClass« Я установил simple_form –

0

Добавьте DIV на главной странице, чтобы открыть модальное всплывающее окно:

<div class='modal_popup> 
</div> 

Для обновления имени и точек пользователя на главной странице, вы должны изменить ссылку изменить так:

<%= link_to 'Edit', edit_user_path(user), remote: true %> 

контроллер изменения:

def edit 
    @user = User.find(params[:id]) 
end 

_modal.html.erb

<div class="modal"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
       <h4 class="modal-title">Modal title</h4> 
      </div> 
      <%= form_for @user, remote: true do |f| %> 
       <div class="modal-body"> 
        <%= f.text_field :name %> 
        <%= f.text_field :points %> 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
        <%= f.submit 'Update', class: "btn btn-primary" %> 
       </div> 
      <% end %> 
     </div><!-- /.modal-content --> 
    </div><!-- /.modal-dialog --> 
</div><!-- /.modal --> 

edit.js.erb

$('.modal_popup').html("<%= j(render partial: '/users/modal') %>"); 
$('.modal').show(); 

После обновления пользователь в update.js.erb добавить ниже строк кода:

$('.modal').hide(); 
window.location.reload(); 

Надежда это может помочь ..

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