2013-06-14 4 views
1

User has_one UserProfile.
Тогда UserProfile имеет wanted_message колонка как строка.Как я могу обновить содержимое определенного столбца без загрузки страницы?

Здесь я показываю поле ввода, чтобы обновить wanted_message
Я хочу, чтобы обновить, если определенный пользователь вводит любое сообщение, то нажмите кнопку «Обновить».

Как я могу? сейчас, это ведет меня к URL «/ пользователей/12», если нажать «Update»

Я не хочу, что :(Я хочу, чтобы обновить без загрузки страницы (Ajax запроса).
Тогда Я хочу иметь действие называется update_message в пользователя contoroller

Как я могу?

<%= form_for(current_user, :url => {:controller => "user", :action => "update_message" }, :remote => true, :class => 'form-search') do |f| %> 
     <%= f.fields_for :user_profile do |profile_form| %> 
      <div class="input-append"> 
       <%= profile_form.text_field :wanted_message, :class => 'span6' %> 
       <button type="submit" class="btn">Update</button> 
      </div> 
     <% end %> 
    <% end %> 

ответ

2

вы должны установить remote => true в вашей форме, а также установить :method => put Put позволяет обновлять столбцы в базе данных и remote true будет настраивать форму для отправки запроса ajax. Вам также необходимо настроить действие update_message в вашем контроллере для обработки запросов ajax. Наконец, убедитесь, что ваши маршруты настроены правильно. Вы должны определить, что маршрут в routes.rb и, возможно, сделать :as => 'update_message', чтобы иметь доступ к этим хелперам маршрута методу

Это может помочь вам с AJAX в рельсах образуют http://edgeguides.rubyonrails.org/working_with_javascript_in_rails.html

Вот образец форма, это в Haml хотя:

= link_to "Start", polls_toggle_live_path(poll.id), :method => :put, :remote => true, :class=> 'btn btn-success btn-small start-poll', :id => poll.id 

Какие ссылки на этот контроллер действия

def toggle_live 
    @poll = Poll.find(params[:poll_id]) 
    @poll.toggle_live 
    @poll.save! 
    end 

вызывает этот метод в соответствующей модели опросов, чтобы переключить значение столбца дб

def toggle_live 
    self.is_live = !self.is_live 
    end 

Наконец его настроить в routes.rb таким образом, чтобы передать правильные обновления

match '/polls/toggle_live/:poll_id' => 'polls#toggle_live', :via => :put, :as => 'polls_toggle_live' 
+0

Не могли бы вы дать мне пример кода? – MKK

+0

'<% = form_for current_user,: remote => true,: method => put,: class => 'form-search' do | f | %> '??? – MKK

+0

Да, я скоро отправлю. –

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