如何/在何处适当调用控制器创建方法

时间:2012-05-07 18:23:20

标签: ruby-on-rails activerecord

我刚刚整理了关于has_many的模型间关系:through和belongs_to;我还使用迁移将所需的id字段添加到数据库表中。

我的问题是:用户点击链接后:

<%= link_to "subscribe", new_subscription_path(feed_url: @feed.feed_url)%>

我在新方法中这样做:

def new
    feed_url = params[:feed_url]
    @subscription = Subscription.new

    redirect_to reader_url, notice: "You are now subscribed to: "+Feed.find_by_feed_url(feed_url).title
  end

我只是无法弄清楚我应该如何以及在哪里调用我的create方法,因为我希望订阅链接在我的订阅表中创建一个新行。

另外,为确保我的表格正确,这是我的关联:

User has_many :feeds, :through => :subscriptions, dependent: :destroy

| Users表格包含列:id

Subscription belongs_to :feed
Subscription belongs_to :user

|订阅表包含列:id,user_id,feed_id

Feed has_many :users, :through => :subscriptions

| Feeds表有列:id

1 个答案:

答案 0 :(得分:4)

你刚刚打破了REST的整个想法

new操作用于向用户显示某种表单,用于填充正在创建的资源的详细信息。甚至HTTP-verb GET(您可以在日志中看到new操作)表示它启动的操作不应修改任何资源。

如果您不需要任何表单,则可以为create操作创建直接“访问者”。但是不要通过link_to进行,因为如果没有启用JavaScript,您的用户将无法正常点击它。使用button_to

button_to 'Create', resources_path(your_params)

然后在create操作中定义创建本身。