我有两个模型,角色和背景。字符has_one背景和背景belongs_to字符。我有一个_menu部分设置显示在我的角色视图中,允许用户查看与角色相关的其他模型,例如项目和法术。
但是,Character与其他模型有着很多关系,我无法弄清楚如何正确链接到具有has_one关系的模型。
以下是从我的角色视图页面添加新页面的方法,用于has_many模型:
<%= link_to 'Items Page', character_items_path(@character) unless @character.items.exists? %>
这是菜单partial的代码,一旦页面被创建就会链接到页面:
<%= link_to 'Items', character_items_path(@character) if @character.items.exists? %>
来自我的Backgrounds控制器的代码:
def new
@character = Character.find(params[:character_id])
@background = @character.build_background(params[:background])
end
def create
@character = Character.find(params[:character_id])
@background = @character.create_background(params[:background])
if @background.save
redirect_to character_path(@character), :notice => "Background information successfully created!"
else
render :action => "new"
end
end
有什么建议吗?基本上,我希望有一个link_to在角色显示页面中创建一个新的背景页面,然后在菜单部分创建后显示该背景,并在用户点击链接时能够查看和编辑。
我确实尝试过编写代码:
<%= link_to 'Background', character_background_path(@character) if @character.background.exists? %>
然后Rails抱怨说。存在?是一种未定义的方法。我猜测.exists不适用于has_one关系,否则我首先会错误地使用它。感谢您的任何意见!
答案 0 :(得分:2)
你应该试试if @character.background
。如果未找到背景,则返回nil(请参阅http://guides.rubyonrails.org/association_basics.html#has_one-association-reference)