gpt4 book ai didi

controller - Rails 3 - 如何从 View 中触发方法/ Action

转载 作者:行者123 更新时间:2023-12-04 18:22:04 25 4
gpt4 key购买 nike

标题可能有点奇怪,但让我解释一下。

我有用户、类(class)和订阅模型。用户 has_many :courses, :through => :subscription和类(class) has_many :users, :through => :subscription .订阅属于两者。那部分,我完全理解。我正在使用订阅模型来存储用户和类(class)之间的关系状态(完成、失败、删除、事件等)。

我也有这个创建关系的代码:@subscription = Subscription.create!(:course_id => @course.id, :user_id => current_user.id)到目前为止,我还没有订阅 Controller ,因为它们将主要通过类(class) View 进行管理(但我并没有以一种或另一种方式进行设置,我只是想把它做好)。

我不明白的是如何/在哪里实现用户订阅类(class)的操作。 它应该是 Course Controller 中的一个单独的操作,其中包含您链接到的路由,还是有另一种更好的方法来做到这一点? 我想 AJAX 也是一种实现方式,但我不知道如何实现它。

我浏览了 Michael Hartl 的 rails 教程,在过去几天里进行了一些谷歌搜索,甚至浏览了 Diaspora 的源代码(因为我尝试做的操作类似于与某人交 friend ,尽管关联不同) ,但我似乎无法绕过它。

最佳答案

好吧,我想出了怎么做。

在我的订阅 Controller 中,我制作了 create看起来像这样的方法:

def create
@course = Course.find(params[:course_id])
Subscription.create!( :user_id => current_user.id, :course_id => params[:course_id])
redirect_to @course
flash[:notice] = "You're now subscribed to #{@course.name}! WooHoo!"
end

之后,我可以使用 button_to在我的 View 中使用一个简单的表单来创建一个简单的表单,该表单指向我的订阅 Controller 上的创建操作:
<%= button_to "Subscribe!", subscriptions_path(:course_id => @course.id) %>
当然,还需要在 routes.rb 中添加适当的操作:
resources :subscriptions, :only => [:create, :update]
它绝对可以清理,但就目前而言,它工作得很好。

关于controller - Rails 3 - 如何从 View 中触发方法/ Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com