-1

我正在尝试解决这个持续存在的问题(请参阅我的最后一个问题)

我正在将 Twitter 克隆修改为一体化页面。

我希望current_user能够:username通过手动提交来关注 a。

所以在/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.

这应该有效,但它没有。一定是参数或语法有问题。应该:relationship@relationship?如果是这样,我会收到此错误:

undefined method "model_name" for NilClass:Class

我正在使用 Rails 3.2。现在为了简单起见,这是我的github

4

2 回答 2

0

我认为你的params参考需要是params[:relationship][:username]

于 2013-11-04T00:41:54.683 回答
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| %>
于 2013-11-04T00:50:31.107 回答