将 select 的 id 存储在 ruby 变量中
Storing id from select in ruby variable
我正在为大型移动应用开发 RoR 后端,目前使用管理面板。
我有两个模型:Activity
和 Deal
,加入了 HMT ActivitiesDeal
。该连接在 rails 控制台中进行了两种方式的测试,并且非常有效。
Activity 是应用程序构建的模型,因此管理员需要能够以某种直观的方式从 "Edit activity" 表单向 activity 添加交易。
我试过这个来创建 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
通过在编辑页面外制作 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" %>
我正在为大型移动应用开发 RoR 后端,目前使用管理面板。
我有两个模型:Activity
和 Deal
,加入了 HMT ActivitiesDeal
。该连接在 rails 控制台中进行了两种方式的测试,并且非常有效。
Activity 是应用程序构建的模型,因此管理员需要能够以某种直观的方式从 "Edit activity" 表单向 activity 添加交易。 我试过这个来创建 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
通过在编辑页面外制作 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" %>