2011-12-21 4 views
1

Я просто хотел узнать, есть ли какой-либо метод для обновления записи таблицы из представления? Например, могу ли я удалить запись из таблицы, используя следующий код?Обновление записи с помощью удаленной функции Rails

<td><%= link_to 'Delete', my_path(user), :confirm => 'Are you sure?', :method =>:delete, :remote=>true %></td> 

И в мой контроллер у меня есть:

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

    respond_to do |format| 
    format.js do 
     render(:update) { |page| page.reload } 
    end 
    end 
end 

Приведенный выше код работает отлично. Он удаляет запись из таблицы, а также перезагружает страницу после нажатия ссылки уничтожения. Теперь, мой вопрос: могу ли я сделать то же самое для обновления значения в моей записи? Если да, то как я могу это сделать?

ответ

0

Конечно, вы можете, вы бы просто изменить несколько вещей:

метод в контроллере будет обновление:

def update 
    @user = User.find(params[:id]) 
    @user.update_attributes(params[:user]) 

    respond_to do |format| 
    format.js do 
     render(:update) { |page| page.reload } 
    end 
    emd 
end 

Тогда вы бы изменить ссылку на что-то вроде следующего:

<td><%= link_to "Update", my_path(user), :method => :put, :remote => true %></td> 

Помните, что это под презумпцией того, что вы находитесь в теге form_for @user.

<%= form_for @user do |f| %> 
    <%= f.text_field :name %> 
    # aforementioned link to update goes here 
<% end %> 

Это под впечатлением, что вы установили @user в методе контроллера (скорее всего def edit)

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

спасибо большое за немедленного реагирования, которая работала для меня я пытался с «обновлением 'вместо' put ' –

+0

вы можете проверить мой родственный вопрос здесь http://stackoverflow.com/questions/11477359/why-ajax-is-not-used-when-i-submit-my-remote-update-form – simo

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