2016-04-14 3 views
0

Я работаю над бэкэндом RoR для большого мобильного приложения, в настоящее время с панелью администратора.Хранение идентификатора из select в переменной ruby ​​

У меня есть две модели: Activity и Deal, соединенные HMT ActivitiesDeal. Соединение проверяется обеими способами в консоли rails и работает как шарм.

Активность - это приложение, на котором построено приложение, поэтому администраторы должны иметь возможность добавлять предложения к деятельности из формы «Редактировать активность» интуитивно. Я попытался это для создания activities_deal:

<%=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' %> 

Но это не работает, как я думал. Любые идеи о том, как отправить правильный deal_id в link_activity_deal_path? Это похоже на проблему, которая была решена много раз, но я могу найти все, что подходит.

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

Пожалуйста, укажите ваш вопрос. Укажите, каково желаемое поведение и что случилось в текущей реализации. Пожалуйста, избавитесь от несвязанного кода. – mudasobwa

+0

Я думаю, что ключевое слово здесь * вложенная форма *. – rdupz

ответ

0

Исправлена ​​проблема, делая form_for за пределами страницы редактирования.

Если кому-то нужен код:

<%= 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" %> 
Смежные вопросы