我正在努力解决这个持续存在的问题(请参阅我的上一期提问)
我正在修改一个推特克隆是一个多功能的页面。
我希望current_user
能够通过手动提交来跟踪:username
。
所以在/views/users/buddies.html.erb
下:
<%= form_for :relationship do |f| %>
<%= f.text_field :username, placheholder: "username" %>
</div>
<br/>
<%= f.submit "Add/Subtract" %>
<% end %>
正试图发布到此控制器:
users_controller.rb
def buddies
@relationship = User.find_by_username(params[:username])
if @relationship
if current_user.following? @relationship
current_user.unfollow @relationship
else
current_user.follow @relationship
end
else
flash[:notice] = "User with username #{params[:username]} is not found"
end
我正在使用User.rb
中定义的方法。
这应该有效,但事实并非如此。它一定是params或语法的问题。 :relationship
应@relationship
吗?如果是这样,我收到此错误:
undefined method "model_name" for NilClass:Class
我正在使用Rails 3.2。现在为了简单起见,这是我的github!
答案 0 :(得分:0)
我认为您的params
引用需要为params[:relationship][:username]
答案 1 :(得分:0)
正如彼得所提到的那样,你应该从:username
哈希中抓取:relationship
params[:relationship][:username]
,如下所示:
@relationship = User.find_by_username(params[:relationship][:username])
您可以在控制台中看到params
哈希的确切内容,以确定如何获取:username
。
然后你可以像这样快速而肮脏地检查结果:
puts "No relationship found" if @relationship.nil?
只是为了自己检查。
然后在您的表单中,您执行此操作:
<%= form_for @relationship do |f| %>