使用Rails按钮__调用控制器操作并重定向到另一个视图

时间:2014-09-15 18:31:48

标签: ruby-on-rails ruby model-view-controller button-to

我正在努力解决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">&times;</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)}%>

它为结果页面中的所有产品调用方法,而不是在模态中选择的方法。

您对如何制作它有任何建议,以便仅为所选产品调用该方法,然后将其重定向到限制页面吗?

0 个答案:

没有答案