Ruby 我是否正确处理此Rails表单?
在我的关系中,我有以下几点:Ruby 我是否正确处理此Rails表单?,ruby,ruby-on-rails-3,forms,views,controllers,Ruby,Ruby On Rails 3,Forms,Views,Controllers,在我的关系中,我有以下几点: class RelationshipsController < ApplicationController def new @user_id = User.find_by_id(params[:user_id]) @relationship = Relationship.new end def create @relationship = Relationship.new(params[:relationship])
class RelationshipsController < ApplicationController
def new
@user_id = User.find_by_id(params[:user_id])
@relationship = Relationship.new
end
def create
@relationship = Relationship.new(params[:relationship])
@relationship.rel_id = User.find_by_id(params[:user_id])
@relationship.user_id = current_user
if @relationship.save
redirect_to root_url, :notice => "Signed Up!"
else
render "new"
end
end
end
类关系控制器“已注册!”
其他的
呈现“新”
结束
结束
结束
我认为:
<section id="main">
<%= form_for [@user_id, @relationship] do |f| %>
<div class="field">
<%= f.label :type %>
<%= select_tag(:type, options_for_select([['Friend', 0], ['Family', 1],['Spouse', 2]])) %>
</div>
<div class="actions"><%= f.submit %></div>
<% end %>
</section>
我有几个问题:
参数:{“utf8”=>“✓", "真实性令牌“=>”Z7R4TWSSVHZMFHFH8OCFYUEGZ2RWUXXETLKBR+cLfs=”,“类型”=>“0”,“提交”=>“创建关系”,“用户id”=>“7”}
这对我来说很奇怪,因为它应该是储蓄型的
3。。在
行中使用@user\u id或@current user是否重要?为什么?1)@user\u id
实际上被分配了一个user
的实例,所以我称之为@user
分配rel_id
时,我认为您只需要用户id值(整数)。您可以这样做:
@relationship.rel_id = params[:user_id]
2) type
字段用于带有ActiveRecord的STI表,如果您出于任何其他原因将字段命名为type
,则会发生不好的情况。尝试将其更改为另一个名称,如relationship\u type
3) 可能,具体取决于应用程序的设置方式。@user(u id)和@current_uuser可能代表不同的用户。如果您只希望当前用户为自己创建关系,那么您可以只使用@current_user(在这种情况下可能不使用嵌套路由)。调用属性“type”在rails中是不允许的,因为它已经在继承自ActiveRecord::Base的类上定义了type方法。它用于单表继承
最不痛苦的事情是将该列重命名为“relationship_type”或“kind”,但如果确实需要,您可以这样处理:
@relationship = Relationship.new(params[:relationship])
@relationship[:type] = params[:type]
我选择了一条不那么痛苦的路线,但它仍然没有节约。我原以为它会抱怨:如果它在继承表单ActiveRecord时遇到问题,请键入before。
@user
是@current\u user
的好友。它们应该始终是不同的用户。我还没有把这个签入编码。我看了Railscast#139关于嵌套的评论,那里的建议让我认为嵌套是合适的。你有什么理由不这么认为吗?在这种情况下,嵌套资源就可以了。我只是有点不确定你想如何使用@user和current_user进行比较。current_user是一种确定谁登录的方法。因此,在这种情况下,当前用户已登录并正在与@user
建立关系。这有意义吗?我相信这就是我的代码所做的,但无论出于什么原因,我仍然无法保存关系类型。