我的网络应用中有这个按钮/链接。这是一个披萨的按钮 - 价格,成分和类别的margherita,都已加载到数据库。单击此按钮可将项目的id加载到params,然后用于查找对象。
我想点击以启动以下事件链:
这可能没有JavaScript,只有Ruby on Rails吗? 我被困在第3点。我有一个想法,但不完整。请给我一个提示。
PS。我的想法是为索引呈现视图并在彼此相邻的单独div中显示。
@NickM,我添加了您的代码,并在ActionController::UnknownFormat
方法中指向respond_to do |format|
时抛出show_pizza
错误。
这是我的pizzas/index.html.haml
:
%h1= t :all_pizzas
- @pizzas.each do |pizza|
= render pizza
.orders
%h1 Orders
pizzas/_pizza.html.haml
:
%tr
= link_to pizza.name, show_a_pizza_path(pizza.id), :method => :post
%br/
点击_pizza.html.erb
中的链接后出现此错误。我的show_pizza.js
现在是:
pizza_div = $("#orders");
pizza_div.html( "<%= j render( :partial => 'pizzas/pizza', :locals => { :pizza => @pizza } ) %>" );
我错过了什么?对不起,我不知道js。
答案 0 :(得分:1)
简短的回答是否定的。单击链接时,您需要渲染另一个页面或使用Javascript处理控制器返回的数据。最好的选择是设置一个响应JSON的动作,并解析你在前端得到的内容。
即使你的P.S.你将不得不使用Javascript处理来自服务器的响应,除非您可以渲染新页面。您需要发布一些代码,最好是路由和控制器操作。这也可行:
<%= link_to("Show Pizza", show_a_pizza_path(@pizza.id), :method => :post, :data => {:remote => true}) %>
的routes.rb
post 'show_pizza/:id' => "pizzas#show_pizza", :as => :show_a_pizza
pizzas_controller.rb
def show_pizza
@pizza = Pizza.find(params[:id])
respond_to do |format|
format.js
end
end
视图/比萨饼/ show_pizza.js
pizza_div = $("#the_name_of_your_div");
pizza_div.html( "<%= j render( :partial => 'pizzas/pizza', :locals => { :pizza => @pizza } ) %>" );
然后将披萨标记放在/views/pizzas/_pizza.html.erb
中