【发布时间】:2015-07-29 20:27:20
【问题描述】:
我正在尝试在我的网站上实现“设置”页面。在此页面中,用户可以更改一些基本设置,例如他们的电子邮件和订阅电子邮件。现在,我只是想让他们能够退订电子邮件。首次注册时,他们可以选择选中复选框,该值存储在 mysql 数据库中。现在,我很难弄清楚如何从不同的页面更改它。 以下是注册控制器的外观:
class SignUpsController < ApplicationController
def index
end
def new
@user = SignUp.new
end
def cost
return 10
end
def create
@user = SignUp.new(sign_ups_params)
if @user.save!
UserMailer.welcome_email(@user).deliver
flash[:notice] = "Thank you " + @user.first_name + ", account created successfully."
redirect_to(:controller => 'home')
else
flash[:error] = "something failed"
redirect_to :back
end
rescue
flash[:error] = "Failed to create user, email is taken or passwords do not match"
redirect_to :back
end
private
def sign_ups_params
params.require(:sign_ups).permit(:first_name, :last_name, :email, :password, :password_confirmation, :subscription)
end
end
这是注册页面视图的一部分,显示了我是如何填写和提交表单的:
<h3>Create New User</h3>
<%= form_for(:sign_ups, :url => {:action => 'create'}) do |f| %>
<table summary="Subject form fields">
<tr>
<th>First Name</th>
<td><%= f.text_field(:first_name) %></td>
</tr>
<tr>
<th>Last Name</th>
<td><%= f.text_field(:last_name) %></td>
</tr>
<tr>
<th>Email</th>
<td><%= f.email_field(:email) %></td>
</tr>
<tr>
<th>Password</th>
<td><%= f.password_field(:password) %></td>
</tr>
<tr>
<th>Password Conformation</th>
<td><%= f.password_field(:password_confirmation) %></td>
</tr>
<tr>
<th>Subscribe to email</th>
<td><%= f.check_box(:subscription) %></td>
</tr>
</table>
<input class="btn btn-primary" name="commit" type="submit" value="Create User"/>
</div>
我已经为设置页面制作了一个“个人资料”视图和控制器,但不确定这是否是正确的做法,或者我是否应该只使用注册控制器。 提前谢谢!
【问题讨论】:
-
您是否正在寻找仅更新某些特定用户信息的方法?
-
@FrancescoPirrone 是的,我是
标签: html ruby-on-rails ruby model-view-controller