0

我刚刚整理了关于 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

|Subscriptions 表有列:id、user_id、feed_id

Feed has_many :users, :through => :subscriptions

|Feeds 表有列:id

4

1 回答 1

4

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

执行这些new操作是为了向用户显示一些表单,用于填写正在创建的资源的详细信息。甚至 HTTP 动词GET(你可以在你的日志中看到你的new动作)说它启动一个不应该修改任何资源的动作。

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

button_to 'Create', resources_path(your_params)

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

于 2012-05-07T19:16:41.403 回答