将与控制器关联的表单放在另一个控制器中

时间:2015-02-18 05:01:43

标签: ruby-on-rails forms routing controllers

我想做的事情非常简单,但出于某种原因,我遇到了很多麻烦。我想要的是允许人们在我的网络应用程序的主页上注册简报。我有一个NewsletterSubscriptionsController,它有一个我想用来存储人们电子邮件的创建动作。我还有一个带有主动作的StaticPagesController。在家庭观点中,我想提出一个允许注册的表格。现在我有这样的事情:

<%= form_for(@ newsletter_subscription,url:newsletter_subscriptions_path)do | f | %GT;但我不断得到第一个参数不能是零错误。

在我的NewsletterSubscriptionsController中,我有两种new和create方法。



def new
  @newsletter_subscription = NewsletterSubscription.new
end

def create
  @newsletter_subscription = NewsletterSubscription.new(newsletter_subscription_params)
  if @newsletter_subscription.save
    redirect to root_url
    flash[:success] = "signed up"
  else
    redirect to root_url
end




我该如何制作,以便人们可以在主页上填写表格,这是“静态页面#home'

1 个答案:

答案 0 :(得分:0)

如果您在.new中呼叫create时收到ArgumentError,则表示您的参数未成功通过。检查您的表单,确保它以params[:newsletter_subscription][:email]的形式发送电子邮件,并确保您的请求到达路由器中指定的正确位置(确保您已创建路由到create的{​​{1}}操作。

另外:如果您从通过其他控制器访问的主页创建新的newsletter_subscriptions,则不需要对NewsletterSubscriptions进行new操作,因为用户已经可以访问主页上的表单。在您描述的上下文中,您的NewsletterSubscriptionsController操作未被使用。