2015-10-20 20 views
1

我有看法消息/ html.haml如何從視圖中的表單傳遞參數到咖啡文件?

- if current_user 
    .panel.panel-default#messages 
    .panel-body 
     %ul.media-list 
     = render @messages, locals: { chanell: @chanell } 

    .page-header 
    %h1 Join the discussion! 
    = render "form" 
- else 
    visit root_path 

我需要傳遞變量@chanel到client.subscribe文件JavaScript的梅索德/ messeges.coffee

window.client = new Faye.Client('/faye') 

jQuery -> 
    $('#new_message').submit -> 
    $(this).find("input[type='submit']").val('Sending...').prop('disabled', true) 

    try 
    client.unsubscribe "<%= params[:chanell] %>" 
    catch 
    console?.log "Can't unsubscribe." 

    client.subscribe "<%= params[:chanell] %>", (payload) -> 
    $('#messages').find('.media-list').append(payload.message) if payload.message 

怎麼可能呢?

+0

的可能的複製[如何創建Ruby on Rails的動態JavaScript?] (http://stackoverflow.com/questions/28506994/how-to-create-dynamic-javascript-with-ruby-on-rails) –

回答

2

做到這一點的最好方法是使用存儲在通道中的值設置數據屬性。

因此,像:

jQuery -> 
    $form = $('#new_message') 
    channel = $form.data('channel') 

    $form.submit -> 
    $(this).find("input[type='submit']").val('Sending...').prop('disabled', true) 

    try 
    client.unsubscribe channel 
    catch 
    console?.log "Can't unsubscribe." 

    client.subscribe channel, (payload) -> 
    $('#messages').find('.media-list').append(payload.message) if payload.message 

然後無論你呈現你的表格,這樣做如下:

form#new_message{data: { channel: @channel }} 
相關問題