我有一個問題,讓我的第一個應用程序(我是一個總新手)保存一個新的相關記錄。我有兩個模型(用戶和圖片)has_many/belongs_to關聯。我已經設置了UserController中,以便它可以創建如下一個新的畫面:通過'has_many'更新數據庫'update_attributes'
def new_picture
@user = User.find(current_user.id)
@picture = @user.pictures.build
end
def create_picture
@user = User.find(params[:id])
@picture = @user.pictures.build(params[:picture])
if @picture.save
flash[:notice] = "Your picture was successfully added."
redirect_to :action => 'show', :id => @user.id
else
render :template => "new_picture"
end
end
我用
<%= link_to("add picture", :action => 'new_picture', :id => @user.id) if current_user %>
添加一個新的。但我也想能夠編輯。所以,我更新了UserController中有一些新的代碼:
def edit_picture
@user = User.find(current_user.id)
@picture = @user.pictures.find(params[:id])
end
# When the user clicks the save button update record
def update_picture
@user = User.find(current_user.id)
@picture = @user.pictures.find(params[:picture])
respond_to do |format|
if @picture.update_attributes(params[:picture])
flash[:notice] = "Your picture was successfully updated."
redirect_to :action => 'show', :id => @user.id
else
render :template => "new_picture"
end
end
end
,並添加編輯鏈接到show.erb:
<%= link_to("edit picture", :action => 'edit_picture', :id => picture.id) if current_user %>
它加載編輯表單細末,用數據都在正確的地方,但保存所有它正在做的是從我的圖片表中給我錯誤'UsersController#update_picture'ArgumentError與一堆未知的密鑰(S)。
有人可以解釋爲什麼嗎?我覺得有一塊拼圖,我在這裏不太明白....
在此先感謝!
UPDATE:查看代碼如下:
<h1>New picture for <%= @user.name %></h1>
<% form_for :picture, @picture, :html => { :multipart => true }, :url => {:action => 'update_picture', :id => @user.id} do |f| %>
Off-topic.For未來在查找參數時使用。而不是「@user = User.find(params [:id])」,使用這個「@user = User.find(:first,:conditions => [」id =?「,params [:id]])」 。這將有助於避免您收到的參數中不需要的字符。 – Hishalv
對不起 - 這是題外話?如果可以,我可以編輯它 - 它應該在哪裏? –
對不起,我的意思是我的評論沒有具體回答你的問題,我只是在你過濾參數時給出了一個建議。 – Hishalv