如何使用链接标记插入表中

时间:2012-01-10 03:45:42

标签: ruby-on-rails ajax

我有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'

更新

路由错误

404 Not Found

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; 

2 个答案:

答案 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请求,并且您还有处理successerror的回调方法

答案 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