将变量从控制器传递到视图,rails

时间:2011-08-30 17:15:35

标签: ruby-on-rails

我的rails应用程序中有一个文本输入框。当用户插入文本并提交文本时,控制器按id检查条目表以查看条目是否存在。如果该条目不存在,则将新条目放入表中。如果该条目确实存在,则更新它以包含新的文本输入。

现在,如果用户提交一个条目,然后对其进行编辑并再次提交,而不重新加载页面,则不应创建新条目。我注意到如果创建了一个新条目,则在重新加载页面之前,它的id不会传递给控制器​​。这意味着如果有人不断编辑文本条目并保存而不重新加载,则每个编辑都会向表中添加一个新条目。

我希望条目ID在创建后立即传递给客户端。因此,如果用户决定立即编辑文本条目,他们将提交带有文本的条目的id,从而编辑现有条目而不创建新条目。


这是一些代码:

控制器:

def edit_description
@msg = ''
@entry = nil
  if params[:entry][:id]==nil || params[:entry][:id]==''
    @entry = Entry.new(params[:entry])
  else
    @entry = Entry.find(params[:entry][:id])
    @entry.title = params[:entry][:title]
    @entry.data = params[:entry][:data]      
  end

if @entry.save
   @msg ='Save Successful'
else
   @msg ='Trouble Saving'    
end   

视图:

<%= form_remote_tag(
            :url=>{:controller=>"details", :action=>"edit_description"}%>
        <p><textarea rows="10" cols="50" name="entry[data]"><%= (h(@entry.data) unless @entry==nil)%></textarea></p>
        <p>
            <input type="hidden" name="entry[id]" value="<%=(@entry.id unless @entry==nil)%>"/> 
            <input type="submit" value="Save"/>
        </p>                            
    </form>     

1 个答案:

答案 0 :(得分:0)

这不应该只使用REST进行编辑/更新吗?