[更新了问题,请看后半部分]
我正在构建一个简单的注册/登录表单的简单Web应用程序。 我想要的系统是
现在我每次都使用新的用户名/关键字进行测试。
问题是,最终输出是/save_update
,并最终出现一个错误,表明没有参数是givin。 (当然没有参数是givin)
我有什么可以做的吗?三江源!
控制器
#
# Register user
#
def save_user
point_id = session[:point_id]
@point = Point.find(point_id)
end
def save_update
username = params[:user][:name]
keyword = params[:user][:key]
point_id = session[:point_id]
#
# if username exists, match password.
# if not, create new.
#
user = User.find_by_username(username)
if user
if user.keyword == Digest::SHA1.hexdigest(user.salt + keyword)
# User exists!
render text: 'Matched!'
else
# keyword is wrong
render text:"keyword is wrong.."
end
else
# save new user!
user = User.create(salt:SecureRandom.hex(4))
user.update(
username:username,
keyword:Digest::SHA1.hexdigest(user.salt + keyword)
)
point = Point.find(point_id)
point.update(:user_id => user.id)
return redirect_to action: :goodbye
end
end
def goodbye
# goodbye.html.erb exists
point_id = session[:point_id]
point = Point.find(point_id)
@username = User.find(point.user_id).username
end
查看(save_user.html.erb)
<%= form_tag({action: :save_update}, {name: :user_info, method: :post}) do -%>
<p>Username(英数字):
<%= text_field_tag("user[name]", "", options:{ id:'user_name' }) %></p>
<p>Keyword(英数字) :
<%= text_field_tag("user[key]", "", options:{ id:'user_key' }) %></p>
<br>
<!-- see diagnose2_helper.rb! ↓ -->
<%= submit_link_tag(name = "confirm", form_id = "user_info", action="save_update") %>
<% end %>
辅助
def submit_link_tag(name = "submit", form_id, action)#, options = {})
content_tag( :a, name, { "href" => "./#{action}", "onclick" => "document.#{form_id}.submit();"})
end
我现在意识到我的代码有两个问题,但是虽然它改变了它,但它没有解决它。
在save_user.html.erb中,我有一个form_tag({action: :save_update} ...
,还有submit_link_tag
,其中包含相同的操作。所以它两次调用save_upate
动作。
即使我删除了{action: :save_update}
,我也遇到了同样的错误,但这次似乎是因为submit_link没有发送任何哈希。
我现在将重新考虑我的代码,但如果有人对此问题有任何想法,谢谢,这将非常有帮助。
答案 0 :(得分:1)
试试这个
redirect_to action: :goodbye
不是
return redirect_to action: :goodbye
希望这对你有用。
答案 1 :(得分:0)
在您的控制器中使用
redirect_to :back