我有ArtistProduct
型号。用户输入产品详细信息,用户可以在保存详细信息之前单击预览链接在模态窗口中查看输入的详细信息。
我正在尝试使用AJAX保存数据,方法是在验证时传递params等所有细节,但不保存数据库。
在视图中我正在调用AJAX:
var theVal=id+'/'+artist_id+'/'+name+'/'+desc+'/'+price+'/'+story+'/'+artist_name+'/'+dimension+'/'+material+'/'+contact
var theURL = '/add_temp/' + theVal;
$.ajax({
url: theURL
});
在控制器中,我正在处理它:
def add_temp
@pro_id=ArtistProduct.where("id=?",params[:id])
if @pro_id.nil?
@artistprod = ArtistProduct.new(:artist_id=>58, :product_name=>params[:name], :description=>params[:desc], :product_price=>params[:price], :product_story=>params[:story],:artist_name=>params[:artist_name], :dimensions=>params[:dimension],:material=>params[:material],:contact_number=>params[:contact])
@artistprod.save
end
end
更新
感谢您的回复。
现在收到路由错误。
在我的路由器中我喜欢:
match 'add_temp/:id/:artist_id/:name/:desc/:price/:story/:artist_name/:dimension/:material/:contact'=> 'artist_products#add_temp'
更新
No route matches [POST] "/add_temp/P58018/58/Prod/swsx/50/sfdf/null/null/0"
更新
在Controller中,我这样做:
def add_temp if !(ArtistProduct.where("id=?",params[:id]).exists?) @artistprod=ArtistProduct.new(:id=>params[:id],:artist_id=>58, :product_name=>params[:name], :description=>params[:desc], :product_price=>params[:price], :product_story=>params[:story],:artist_name=>params[:artist_name], :dimensions=>params[:dimension],:material=>params[:material],:contact_number=>params[:contact]) @artistprod.save respond_to do |format| format.html { redirect_to @artistprod.addproduct } format.js end end end
您好dbkooper,谢谢您的回答。我尝试了你给出的答案,但我收到路由错误 在视图中我呼吁:
var theURL = '/artist_products/'+id+'/add_temp?artist_id='+artist_id+'product_name='+name+'description='+desc+'product_price='+price+'product_story='+story+'artist_name='+artist_name+'dimensions='+dimension+'material='+material+'contact_number='+contact;
答案 0 :(得分:0)
我看到的一个大问题是你的$.ajax
电话缺少一些选项。默认情况下,如果未指定类型,则$.ajax
默认为GET
请求。
您应将其更改为:
$.ajax({
type: 'POST',
url: theURL,
success: function (json) {
// handle your success here
},
error: function (response) {
// handle your errors here
}
});
这样,您指定它将是POST
请求,并且您还有处理success
和error
的回调方法
答案 1 :(得分:0)
我认为你的路线应该是
resources artist_products do
member do
post 'add_temp'
end
end
使用rake:routes来获取正确的路由 最可能的是“artist_products /:id / add_temp”
对于ajax请求,您可以使用val param发送吗?到网址 喜欢
var theURL = '/artist_products/'+id+'/add_temp?artist_id='+artist_id+'so on..';
$.ajax({ url: theURL });
在你的控制器内 你可以像往常一样访问params