这似乎是一个非常基本的问题,但我无法弄清楚我做错了什么。我有我的rails form_for和select和options_for_select。
:计划属性是根据所选内容正确创建的,但对于计划属性,它始终是"第一年"无论您为创建选择什么以及何时尝试编辑。它们基本相同,所以我不明白为什么一个有效而另一个无效。在此先感谢您的帮助!
创建表单:
<%= form_for @customer do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :phone %>
<%= f.text_field :phone %>
<%= f.label :year %>
<%= f.select :year, options_for_select([['1st Year', 1], ['2nd Year', 2], ['3rd Year', 3], ['4th Year', 4]]) %>
<%= f.label :plan %>
<%= f.select :plan, options_for_select([['15', 15], ['45', 45], ['75', 75], ['105', 105]]) %>
<%= f.submit%>
<%end%>
编辑表格:
<%= form_for @customer do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :phone %>
<%= f.text_field :phone %>
<%= f.label :year %>
<%= f.select :year, options_for_select([['1st Year', 1], ['2nd Year', 2], ['3rd Year', 3], ['4th Year', 4]]) %>
<% if current_user.role == "admin"%>
<%= f.label :plan %>
<%= f.text_field :plan %>
<%else%>
<p>Plan selected: <%=@customer.plan%></p>
<%end%>
<%= f.submit%>
<%end%>
customer_controller:
def create
@customer = current_user.customers.create(customer_params)
if current_user.role == "admin"
redirect_to customers_path
elsif current_user.role == "customer"
redirect_to user_customer_path(current_user, @customer)
else
redirect_to '/'
end
end
def update
@customer.update(customer_params)
if current_user.role === "customer"
redirect_to customer_path(@customer)
else
redirect_to customers_path
end
end
private
def customer_params
params.require(:customer).permit(:name,:year,:email,:plan,:verification)
end
答案 0 :(得分:1)
所以我检查了我的rails控制台,发现它确实在工作!这意味着问题在于所选择的内容。我在评论中找到了解决方案:select doesn't show selected value
并且能够使用以下代码显示正确的选定值:
<%= f.select :year, options_for_select([['1st Year', 1.to_i], ['2nd Year', 2.to_i], ['3rd Year', 3], ['4th Year', 4]], selected: @customer.year) %>