我开始学习Rails大约一个月了,我正在开展一个相当简单的项目来提高我的技能。这是一个博客,编辑可以添加文章,用户可以通过添加他们的电子邮件订阅时事通讯。主页是一个索引视图,它们是一个显示在所有页面上的页脚。
这是我的问题:我想在应用程序布局中存在的页脚上包含form_for新闻稿。该表单有一个特定的模型:Subscriber,用于存储用户的电子邮件。
到目前为止我所做的是在文章控制器上包括以下内容:
def index
@articles = Article.order(created_at: :desc).all
@subscriber = Subscriber.new
end
def create
@subscriber = Subscriber.new(subscriber_params)
if @subscriber.save
redirect_to '/home'
else
render 'new'
end
end
def subscriber_params
params.require(:subscriber).permit(:email)
end
在application.html.erb中:
<%= form_for(@subscriber) do |f| %>
<%= f.email_field :email, :placeholder => "email address" %>
<%= f.submit 'Sign up', :id => "signup" %>
<% end %>
表单仅在索引页面上正确显示,并且不会保存到数据库中(没有错误)。
我尝试在应用程序控制器上使用前置过滤器以及渲染局部过滤器而没有任何成功。
编辑
订户控制器代码:
def new
@subscriber = Subscriber.new
end
def create
@subscriber = Subscriber.new(subscriber_params)
if @subscriber.save
redirect_to '/home'
else
render 'new'
end
end
private
def subscriber_params
params.require(:subscriber).permit(:email)
end
应用程序控制器:
before_action :create_new_subscriber
def create_new_subscriber
@subscriber = Subscriber.new
end