2016-04-14 12 views
0

Ich arbeite an einem RoR-Backend für eine große mobile App, derzeit mit dem Admin-Panel.Speichern der ID aus der Auswahl in Ruby Variable

Ich habe zwei Modelle: Activity und Deal, verbunden durch HMT ActivitiesDeal. Die Verbindung wird in beide Richtungen in Schienen-Konsole getestet und funktioniert wie ein Charme.

Aktivität ist das Modell, um das die App herum aufgebaut ist. Administratoren müssen in der Lage sein, Transaktionen aus dem Formular "Aktivität bearbeiten" in einer intuitiven Weise hinzuzufügen. Ich habe versucht, diese activities_deal für die Erstellung von:

<%=select("deal", @deal_id, Deal.all.collect {|d| [d.title, d.id]}, {})%> 
<%= link_to "Add", link_activity_deal_path(activity_id: @activity.id, deal_id: @deal_id), method:'post' %> 

Aber es funktioniert nicht, wie ich dachte. Irgendwelche Ideen, wie man die richtige deal_id an link_activity_deal_path sendet? Das scheint ein Problem zu sein, das viele Male gelöst wurde, aber ich kann alles finden, was passt.

ActivitiesDealsController:

class ActivitiesDealsController < ApplicationController 

def create 
    @activity = Activity.find(params[:activity_id]) 
    render file: 'public/404.html' and return unless @activity && Deal.find(params[:deal_id]) 
    @activity_deal = ActivitiesDeal.new 
    @activity_deal.activity_id = params[:activity_id] 
    @activity_deal.deal_id = params[:deal_id] 
    if @activity_deal.save 
     redirect_to proc {activity_url @activity} 
    end 
    render file: 'public/500.html' 
end 

def destroy 
    p params 
    @activity = Activity.find(params[:activity_id]) 
    render file: 'public/404.html' and return unless @activity 
    @activity_deal = ActivitiesDeal.where("activity_id == ? AND deal_id == ?", params[:activity_id], params[:deal_id]) 
    render file: 'public/404.html' and return unless @activity_deal 
    ActivitiesDeal.destroy(@activity_deal) 
    redirect_to proc {activity_url @activity} 
end 
end 
+0

Bitte geben Sie Ihre Frage. Bitte geben Sie an, was das gewünschte Verhalten ist und was in der aktuellen Implementierung passiert ist. Bitte entfernen Sie nicht verwandten Code. – mudasobwa

+0

Ich denke, das Schlüsselwort hier ist * verschachtelte Form *. – rdupz

Antwort

0

das Problem behoben, indem ein form_for außerhalb der Bearbeitungsseite zu machen.

Wenn jemand den Code benötigt:

<%= form_for @activity, as: :deal, :url => link_activity_deal_path(activity_id: @activity.id), method:'post' do |f|%> 
<%= f.collection_select :id, @deals, :id, :title %> 
<%= f.submit "Add Deal", class: "btn btn-primary" %>