Rails:如何从JQuery帖子中传播视图更新



我有一个Rails控制器welcome_controller.rb,它定义了indexcommit方法。index方法在index.html.erb隐式地呈现模板,该模板具有select_tagbutton_tag

select_tag间接地绑定到一个模型。

在单击mybutton时,我设置了带有JQuery的coffeescript来发送post,并将参数传递给控制器中的commit方法。

尽管调用了commit方法来更新与someselecttag绑定的模型SomeModel,但在浏览器刷新完成之前,它不会在页面中更新。如何在视图中显示someselecttag的更新?我意识到我可以直接从JQuery更新someselecttag,但它不能直接从模型本身获取数据。重写此功能的可接受的"Rails"方式是什么?

控制器welcome_Controller.rb

def index
    @somelist = SomeModel.all
end
def commit
    params.each do |param|
        SomeModel.new(param)
        SomeModel.save!
    end
    render :nothing => true
end

查看模板index.html.erb

<%= options = options_from_collection_for_select(@somelist, 'id', 'name') %>
<%= select_tag :someselecttag, options, multiple: true %>
<%= button_tag "do stuff", :id => "mybutton" %>

Coffeescapet

$ ->
    $("#mybutton").click(->
        collection_of_stuff = somefunctionthatineededtousejqueryfor()
        $.post "/welcome/commit", collection_of_stuff
    )

commit操作应该返回模型的更新副本(例如JSON)。然后在ajax success上,您可以获取此模型数据并用它更新DOM。

最新更新