我正在努力解决Rails button_to。
基本上,我实施类似食物日记的东西,以记录用户一天所摄取的食物的卡路里,蛋白质等。我有营养页面,用户点击添加项目。这将打开一个引导模式,用户在搜索栏上键入该模式,然后点击搜索。这会将它们带到一个结果页面,该页面显示多达20种不同的产品,用户可以在其中单击每个产品,并显示包含所单击产品详细信息的模式。在这个模态中,我还包含一个按钮,用于将该项添加到日记中,此按钮应调用名为createmeal的控制器方法
def createmeal(product, quantity)
@user = current_user
@user.journal_date = Time.now
food = FoodItem.new(:brand => product.brand,
:item => product.item,
:qty => product.qty,
:unit => product.unit,
:cal => product.cal,
:carb => product.carb,
:sod => product.sod,
:dfib => product.dfib,
:prot => product.prot,
:totalfats => product.totalfats,
:satfats => product.satfats,
:sugars => product.sugars,
:chol => product.chol,
:iron => product.iron,
:calcium => product.calcium)
food.save
meal = Meal.new(:user_id => @user.id, :food_item_id => food.id, :date => @user.journal_date, :meal_type => Rails.cache.read('meal-type'), :qty => quantity)
meal.save
end
按钮添加,也应该将用户返回到营养页面,所以我尝试了这样的事情:
<div class="header_texture_tracking"></div>
<div class="landing_main_quote_tracking">TRACK</div>
<div class="header_subtitle_tracking">nutrition, fitness and progress</div>
<%= form_tag searchresults_path, :method => 'get' do %>
<p style=" position: absolute;
top: 300px;
left: 500px;">
<%= text_field_tag :search, params[:search], inputhtml: {:class => 'searchtf'}%>
<%= submit_tag "Search", :name => nil, inputhtml: {:class => 'btn btn-primary'} %>
</p>
<% end %>
<div class="resultsdiv">
<% if @prods %>
<p style="font-family: 'Lane - Narrow';
color: rgb( 78, 83, 82 );
font-size: 20px;
position: absolute;
left: -180px;">
Showing search results for <%= @search %>:
</p>
<% @prods.each do |f| %>
<a data-toggle="modal" href=<%="#"+"#{f.id}"+"item-details"%>><div class="results_box">
<p class="itemresult"><%= f.item %></p><br/><br/>
<p class="itemdetails"><%= f.brand %>, <%= f.qty %><%= f.unit %>, <%= f.cal %> calories</p>
</div></a>
<% end %>
<%= @search = '' %>
<% end %>
<% if @prods %>
<% @prods.each do |f| %>
<div class="modal fade" id=<%="#{f.id}"+"item-details" %> >
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id = 'resultsDetailsHeaderBox'><p class="resultsDetailsName"><%= f.item %></p></h4>
</div>
<div class="modal-body">
Brand: <%= f.brand %>
Serving size: <%= f.qty %><%= f.unit %>
Calories: <%= f.cal %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<%= button_to 'ADD', nutrition_path, {action: "createmeal(f,1)"}%>
</div>
</div>
</div>
</div>
<% end %>
最后,我尝试了不同的组合,包括使用辅助方法,但是就目前而言,它根本就没有调用方法createmeal。如果我这样试试:
<%= button_to 'ADD', nutrition_path, {action: createmeal(f,1)}%>
它为结果页面中的所有产品调用方法,而不是在模态中选择的方法。
您对如何制作它有任何建议,以便仅为所选产品调用该方法,然后将其重定向到限制页面吗?