我需要使用ROR创建单页网站,允许用户修改该页面的样式。用户至少应该能够更改页面上的颜色,标题和字体,但不能修改用于样式化页面的控件。数据应该通过ActiveRecord保存,更改应该保持会话。
我的问题:我在这里为用户创建了表单并在用户表中创建了三个字段,即字体,背景颜色和标题,并使用设计进行身份验证,但是如何为用户保存字体,标题和样式以便更改应反映在页面中,并且更改应该在会话中持续存在。
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
static_page.html.erb
<%= form_for :user do |u| %>
<p>
<%= u.label :title %><br>
<%= u.text_field :title %>
</p>
<p>
<%= u.label :description %><br>
<%= u.text_field :description %>
</p>
<p> <%= u.label :back_ground_color %><br>
<select name="back-ground" id="bgcolor">
<option value="1">Orange</option>
<option value="2">Green</option>
<option value="3">Blue</option>
<option value="4">Pink</option>
<option value="5">Yellow</option>
<option value="6">White</option>
</select>
</p>
<p>
<%= u.label :font %><br>
<select name="font" id="font">
<option value="1">Times new Roman</option>
<option value="2">Calibri</option>
<option value="3">fantasy</option>
<option value="4">serif</option>
</select>
</p>
<br >
<p>
<%= u.submit %>
</p>
<% end %>
现在我该怎么做才能提交此表单以便它可以正常工作 不要忘记 - 我需要更改背景颜色,字体,标题以及存储在数据库中以保持持久性。
答案 0 :(得分:0)
您需要在数据库中存储颜色的十六进制值(例如:#FFFFFF)。然后在视图中,您可以提供内联css,也可以使用帮助程序生成它:
content_tag(:span, "", :style => "background-color:#{current_user.font_color}")
您可以以相同的方式使用内联css。以同样的方式你可以为字体和其他东西做。就像存储字体名称一样:"Times New Roman"
然后在font-family
中指定它。在任何地方使用这些动态名称,如果有人没有输入任何值,您总是可以使用默认值,如下所示:
content_tag(:span, "", :style => "background-color:#{current_user.font_color.nil? ? '#FFFFFF' : current_user.font_color}")
希望这有帮助。