在我的rails应用程序中,我根据用户在新用户上输入的一些信息来猜测用户的性别。\ n'形成。之后,用户被带到显示页面,在那里我显示猜测。我希望用户告诉我我是对还是错所以我可以改进数据。我想要“是”'并且没有'按钮在哪里 '无'使用其他性别更新数据库中用户的记录。
这是我的节目视图
<div class='container'>
<header>We think you're.....</header>
<div class='cmn-t-shake'>
<%= @person.male ? "Male" : "Female"%>
</div>
<div>
Were we right? <br/>
<%= link_to 'Yes', '/people'%>
|
<%= link_to 'No', 'people/flip_gender(@person)'%>
</div>
<div>
<%= link_to 'Learn more', '/people'%>
</div>
</div>
和我的控制器的片段
class PeopleController < ApplicationController
def index
@men = Person.where("male = ?", true)
@women = Person.where("male = ?", false)
end
def new
@person = Person.new
end
def show
@person = Person.find(params[:id])
end
def create
@person = Person.new(person_params)
@person.male = guessGender(@person)
if @person.save
path = '/people/' + @person.id.to_s
redirect_to path
else
render 'new'
end
end
def person_params
params.require(:person).permit(:male, :height_in_inches, :weight_in_lbs)
end
def flip_gender(p)
p = Person.find(params[:id])
person.gender = !p.flip_gender
p.save
end
和我的routes.rb
root 'people#new'
get 'people' => 'people#index'
get 'people/new' => 'people#new'
post 'people' => 'people#create'
get 'people/:id' => 'people#show'
如何通过点击按钮/链接,使用flipGender更新并在显示页面上保存当前记录?
答案 0 :(得分:2)
你可以让flipGender成为一个帮助方法,让它可以从视图中访问:
def flip_gender(p)
p = Person.find(params[:id])
person.gender = !p.flip_gender
p.save
end
helper_method: flipGender
然后在你看来:
<% flipGender(p) %>
或类似的东西。您还可以为辅助方法创建一个文件,然后将其包含在ApplicationController中,以便这些方法可用,请查看this thread