2016-08-26 9 views
1

したがって、カスタムのparamsハッシュを作成したいのですが、それを行う方法がわかりません。私はルビーハッシュを作成しました(ちょっと)。私はあなただけの単一レベルparamsハッシュを作成しているように、ポストコントローラajax postメソッドを使用してparams hashを作成する

post '/vote' do 
    @entry = Entry.get!(params[:entry_id]) rescue halt(404) 
    @entry.vote(request.ip, params[:up] != 'false') 
end 
+0

あなたの期待しているparamsオブジェクトの構造は何ですか?私は、あなたの現在のアプローチがうまくいかないことを伝えることができます。 RubyはリクエストのURLにある文字列 '{entry_key =>" "、:up =>" "}をハッシュに評価するだけではありません。paramsに値を渡すための特別な構文があります。 // localhost:9292/route?key = val&other_key = otherval' –

+0

http:// localhost:9292/route?key = val&other_key = othervalはgetリクエストにのみ適用できますか? – Goamaral

+0

ちょうど私のコントローラを上に置いた – Goamaral

答えて

1

だからあなたのコメントから、それが見え、他のアイデア

$("#bt-dw , #bt-up").click(function (event) { 
    event.preventDefault(); 
    var id = $(this).parent().attr("value"); 
    var up = $(this).attr("value"); 

    $.ajax({ 
    type: "POST", 
    url: "/vote", 
    data: "{:entry_id => '" + id + "',:up => '" + up + "'}", 
    success: function() { 
     console.log("post successful"); 
    }, 
    error: function() { 
     console.log("post unsuccessful"); 
    } 
    }); 
}) 

がありませんでした。

param値として配列またはハッシュを送信する場合は、少し複雑になります。

これについては、2つの方法があります。

オプション1:Ajaxのリクエストでdataためにこの値を使用

data: { entry_id: id, up: up } 

オプション2:URLではなく、dataに同じ情報が含まれています。私は

url: `/vote?entry_id=${id}&up=${up}` 

注意ここでES6テンプレート文字列を使用します。これは次のものと同じです:

url: ("/vote?entry_id=" + id + "&up=" + up) 
+0

ありがとう。私はこれを学ぶのに苦労していた – Goamaral

関連する問題