Javascript Rails上的Ajax如何使用Ajax附加方法呈现HTML?

Javascript Rails上的Ajax如何使用Ajax附加方法呈现HTML?,javascript,jquery,ruby-on-rails,ruby,ajax,Javascript,Jquery,Ruby On Rails,Ruby,Ajax,我不会说英语,请你谅解。对不起 /app/views/sale/index.html.erb 我想在这里做ajax <div class="col-lg-4" style="padding:5px;" id=reply_preview> <%= render 'sale/billpreview'%> </div> 这是用于发送数据的按钮 <button type="submit" class="btn btn-defalut re

我不会说英语,请你谅解。对不起

/app/views/sale/index.html.erb
我想在这里做ajax

<div class="col-lg-4" style="padding:5px;" id=reply_preview>

      <%= render 'sale/billpreview'%>

</div> 

这是用于发送数据的按钮

<button type="submit" class="btn btn-defalut reply_sale" value="<%= m.id %>" name="menuid"

--------------------------------------------------------
总价
=================================
완료
初始化
取消
/app/controllers/home\u controller.rb

def billpreview

    if current_user.store.billopen

      @salesmenu = Salesmenu.new
      @salesmenu.menu_id = params[:menuid]
      @salesmenu.bill_id = current_user.store.bills.last.id
      @salesmenu.save

      @billshow = current_user.store.bills.last

    else #
      @bill = Bill.new
      @bill.store_id = current_user.store.id #db connect (bill <-> store)
      @bill.workperiod_id = current_user.store.workperiod.last.id #db connect (bill <-> workpeiod)
      @bill.save


      @salesmenu = Salesmenu.new
      @salesmenu.menu_id = params[:menuid]
      @salesmenu.bill_id = @bill.id
      @salesmenu.qty = 1 

      @salesmenu.save

      @billshow = @bill #current_user.store.bills.last
    end

    @temp_store = current_user.store 
    @temp_store.billopen = true
    @temp_store.save 

return head :no_content
    #redirect_to :back
  end
def billpreview
如果当前_user.store.billopen
@salesmenu=salesmenu.new
@salesmenu.menu_id=params[:menuid]
@salesmenu.bill\u id=当前用户.store.bills.last.id
@salessmenu.save
@billshow=当前用户.store.bills.last
否则#
@比尔=比尔
@bill.store_id=当前_user.store.id#数据库连接(bill store)
@bill.workperiod_id=当前_user.store.workperiod.last.id#db connect(bill workpeiod)
@比尔,救命
@salesmenu=salesmenu.new
@salesmenu.menu_id=params[:menuid]
@salesmenu.bill_id=@bill.id
@salesmenu.qty=1
@salessmenu.save
@billshow=@bill#current_user.store.bills.last
结束
@临时存储=当前用户存储
@temp_store.billopen=true
@临时存储
返回头:无内容
#重定向到:返回
结束
另外,我不知道返回头:无内容是什么意思 我只是在谷歌复制粘贴。 我不太确定这是否正确。
我说得对吗

在继续学习的过程中,您应该知道并必须学习以下几点:

Rails链接附带一个内置函数,用于发送ajax请求,如下所示:

<%= link_to "My ajax request text", post_new(@post), remote: true %>
respond_to查看您的请求并确定它是HTML请求(无Ajax)还是Ajax请求。如果是Ajax请求,它会用Javascript文件响应,否则它会用HTML文件响应,默认情况下就是这样

在视图文件夹中,您现在需要为javascript文件创建一个新文件,Rails可以在执行Ajax请求时发送该文件:

billpreview.html.erb
billpreview.js.erb
billpreview.html.erb是您到目前为止一直在使用的工具。billpreview.js.erb是您在请求Ajax响应时将使用的内容

在billpreview.js.erb中,您可以使用与billpreview.html.erb中使用的相同的实例变量

#billpreview.js.erb
$('#id_in_your_view').append('<%= j render @salesmenu %>');
#billpreview.js.erb
$('your_视图中的'id_')。追加('');
通常,您会在视图中选择一个id($(“#id_in_your_view”)),您可以将内容附加或前置到该id。因为您使用的是javascript,所以您必须使用的不仅仅是“render”。一旦你理解了它背后的逻辑,它就会变得非常简单。祝你好运

我建议您观看以下两个youtube视频:


非常感谢。亚历山大·卢纳。我应该学习rails助手和链接到方法。但我不知道我在哪里。我可以用“”和“”交换吗。你的答案中的@post是什么?我没有post数据库。对不起,先生。。。之后,我将学习rails助手和链接。@post只是一个例子。你用它代替你的按钮。
<%= link_to "My ajax request text", post_new(@post), remote: true %>
def billpreview
# write all your logic and set instance variables for the objects you want
# @salesmenu
respond_to do |format|
          format.html
          format.js
        end
end
billpreview.html.erb
billpreview.js.erb
#billpreview.js.erb
$('#id_in_your_view').append('<%= j render @salesmenu %>');