【发布时间】:2014-04-12 07:00:48
【问题描述】:
这个问题是关于我在问了上一个问题Rails - How do I refresh a page without reloading it?之后遇到的问题
一直在谷歌搜索,但找不到解决方案。
我正在构建一个函数,每次人们访问该页面时都会发出随机记录,但如果用户刷新页面,随机记录将再次更改。
因此我尝试使用 cookie
#posts_controller.rb
def new
@random = cookies[:stuff] ||= Stuff.random
end
并在我的posts/new 视图中调用@random.content,因为我只想要Stuff 模型的内容,当我第一次进入页面时很好,但是当我刷新页面时,它给了我这个错误
undefined method 'content' for "#<Stuff:0x0000010331ac00>":String
有没有办法解决这个问题?
谢谢!
----更新----
我已经使用 <%= show_random(@random)['content'] %> 和 Internal Server Error expected Hash (got Array) for param 'post'using 修复了 content 缺失问题
<%= f.hidden_field :stuff_id , :value => show_random(@random)[:id] %>
stuff/new.html.erb
# app/views/stuff/new.html.erb
<%= show_random(@random)[:content] %>
<div>
<%= f.hidden_field :stuff_id , :value => show_random(@random)[:id] %><br>
</div>
但是在没有通过验证的情况下创建帖子时,它给了我
no implicit conversion of Stuff into String
Extracted source (around line #2):
1
2 <%= show_random(@random)['title'] %>
我认为这与我在 Posts_controller.erb 中的创建操作有关
请看下面我的Posts_controller.erb
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Post created successfully!"
else
@random = Stuff.where(id: params[:post][:stuff_id]).first
render 'new'
end
end
【问题讨论】:
标签: ruby-on-rails cookies ruby-on-rails-4